OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

DAOでフィールドのデータ型を変更するには?

  • すぐに回答を!
  • 質問No.134454
  • 閲覧数767
  • ありがとう数2
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 46% (12/26)

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

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

トピックで
「Visual Basic の中で、DAO の Type プロパティを使って、フィールドを
Fields コレクションに追加する前に、データ型を設定できます。」
と書かれてあるのを見つけました。と言う事は変更できないのでしょうか?
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル8

ベストアンサー率 45% (18/40)

対象となるテーブルを再作成してよいのなら、
テーブル作成クエリーを使うとかなり楽です。

例)
元テーブル<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つになるので、
データが大量にあるテーブルの場合には、この方法はあまりお勧めしません。

はずしてたらすいません。^^;
お礼コメント
tomosuke09

お礼率 46% (12/26)

ありがとうございます。
さっそく試します。
投稿日時 - 2001-09-17 09:06:12
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル8

ベストアンサー率 25% (2/8)

Adoでも使うのですが、 String関数や、Cint関数を使ってみるのは、どうでしょう? 私自身、仕事でよく使ってますけど、例えばsqlでそのテーブルでのMax値を取ってきて、Cint関数で数値型にして欲しいデータを生成したりしてます。 関数に関しては、分かりますか?日付を生成したりする関数なんかもあるので、関数を知っていれば、便利ですよ! \(^o^)/ ...続きを読む
Adoでも使うのですが、
String関数や、Cint関数を使ってみるのは、どうでしょう?
私自身、仕事でよく使ってますけど、例えばsqlでそのテーブルでのMax値を取ってきて、Cint関数で数値型にして欲しいデータを生成したりしてます。

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

お礼率 46% (12/26)

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

ベストアンサー率 30% (4/13)

こんにちは。 SQL文ではダメでしょうか。(^^; 1.新テーブルの作成 create table 新テーブルの別名 (・・・); 2.データ移植 insert into 新テーブル別名 (select * from 元テーブル); 3.元テーブル削除 drop table 元テーブル; 4.データ移植 create table 新テーブル ...続きを読む
こんにちは。
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
  • 回答No.3
レベル7

ベストアンサー率 30% (4/13)

すみません。質問をちゃんと読んでいませんでした。 オラクルでやってたことですので、DAOでできるのか分かりません。 失礼しました。(はずかしー)
すみません。質問をちゃんと読んでいませんでした。
オラクルでやってたことですので、DAOでできるのか分かりません。
失礼しました。(はずかしー)
  • 回答No.4
レベル7

ベストアンサー率 77% (14/18)

以下のようにすればどうでしょうか? 1.対象のテーブルのTableDefオブジェクトよりフィールド  情報を取得する。 2.DatabaseオブジェクトからテーブルをDeleteする。 3.TableDefsオブジェクトを新規に作成する。 4.1の情報を設定する。(この時フィールド型を変更) 5.DatabaseオブジェクトにTableDefsオブジェクトをAppendする。 一度、 ...続きを読む
以下のようにすればどうでしょうか?

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

一度、試して見て下さい。
お礼コメント
tomosuke09

お礼率 46% (12/26)

ありがとうございます。
試してみます。
投稿日時 - 2001-09-17 09:07:02
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ