アプリ版:「スタンプのみでお礼する」機能のリリースについて

Visual Basic5.0(SP3)を使用しています。
DAO3.5を使用してAccess97で作成したテーブル(既にレコードが登録されているテーブル)のフィールドのデータ型を変更したいのですが、方法はありますか?
例えば、整数型(Integer)を長整数型(Long)にといったように...。

FieldオブジェクトのTypeプロパティにセットしようとしたのですが、読み取り専
用のためできません。

トピックで
「Visual Basic の中で、DAO の Type プロパティを使って、フィールドを
Fields コレクションに追加する前に、データ型を設定できます。」
と書かれてあるのを見つけました。と言う事は変更できないのでしょうか?

A 回答 (5件)

対象となるテーブルを再作成してよいのなら、


テーブル作成クエリーを使うとかなり楽です。

例)
元テーブル<TB1>
項目 :データ型
TEST1:Char
TEST2:Integer
TEST3:Binary

実行SQL
SELECT TB1.TEST1,
CSTR(TB1.TEST2) as TEST2, CINT(TB1.TEST3) as TEST3
INTO TB2 FROM TB1;

作成後テーブル<TB2>
項目 :データ型
TEST1:Char
TEST2:Char
Test3:Integer

で、元のテーブルをDeleteすればOK

実際の運用を考えると、テーブル名を変えたくないので、
元テーブルの名前を変えてから、新テーブルを元の名前で作成するか、
作った後から名前を変えるかしてください。

ただし、一時的にせよmdbの中で同一データのテーブルが2つになるので、
データが大量にあるテーブルの場合には、この方法はあまりお勧めしません。

はずしてたらすいません。^^;
    • good
    • 0
この回答へのお礼

ありがとうございます。
さっそく試します。

お礼日時:2001/09/17 09:06

以下のようにすればどうでしょうか?



1.対象のテーブルのTableDefオブジェクトよりフィールド
 情報を取得する。
2.DatabaseオブジェクトからテーブルをDeleteする。
3.TableDefsオブジェクトを新規に作成する。
4.1の情報を設定する。(この時フィールド型を変更)
5.DatabaseオブジェクトにTableDefsオブジェクトをAppendする。

一度、試して見て下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。
試してみます。

お礼日時:2001/09/17 09:07

すみません。

質問をちゃんと読んでいませんでした。
オラクルでやってたことですので、DAOでできるのか分かりません。
失礼しました。(はずかしー)
    • good
    • 0

こんにちは。


SQL文ではダメでしょうか。(^^;

1.新テーブルの作成
create table 新テーブルの別名 (・・・);

2.データ移植
insert into 新テーブル別名 (select * from 元テーブル);

3.元テーブル削除
drop table 元テーブル;

4.データ移植
create table 新テーブル as (select * From 新テーブルの別名);

または、

create table 新テーブル (・・・);
insert into 新テーブル (select * from 新テーブルの別名);


的を得ていなかったらごめんなさい。m(_ _)m
    • good
    • 0

Adoでも使うのですが、


String関数や、Cint関数を使ってみるのは、どうでしょう?
私自身、仕事でよく使ってますけど、例えばsqlでそのテーブルでのMax値を取ってきて、Cint関数で数値型にして欲しいデータを生成したりしてます。

関数に関しては、分かりますか?日付を生成したりする関数なんかもあるので、関数を知っていれば、便利ですよ!
\(^o^)/

この回答への補足

お返事ありがとうございます。
ちょっと質問の内容があいまいでしたので補足します。
ACCESSのテーブルのフィールド定義そのものを変更したいのです。
と言いますのは、仕事で開発したシステムで、当初、あるフィールドを「整数型」で定義していたのですが、後に「長整数型」の数値を格納しなくてはならなくなり、フィールド定義の変更が必要になってきました(システムを収めた客先全てでです)。
新しいテーブルを作成し、そこにデータを移行してもいいのですが、簡単にフィールド定義を変更できれば手間や、ミスを防げます。
よろしくお願いします。

補足日時:2001/09/13 09:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています