• ベストアンサー

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

tonariの回答

  • tonari
  • ベストアンサー率30% (4/13)
回答No.2

こんにちは。 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

関連するQ&A

  • DAOでフィールドの値を変更する

    MDBファイルにDAOでアクセスし、フィールド(今回の場合Fields(4))の値をTextBox内の値に変更する方法がわかりません。 Dim WS As DAO.Workspace Dim DB As DAO.Database Dim RS As DAO.Recordset 'レコードを特定する処理 RS.Fields(4).Value = TextBox.Text RS.Update どのように直せばいいのでしょうか??

  • ACCESSデータベースにVB6(DAO)でフィールドを追加したい

    既存のACCESSデータベースのテーブルにVB6のDAOでフィールドを追加したいのですが、テーブル名.Fields.Append とかいうメソッドがあるようですが、使用方法がわからずフィールドを追加が出来ません。 具体的には、フィールド名"電話番号"で、文字型で固定文字数13を追加したいのです。 どうぞよろしくお願いします。

  • DAOでテーブルを作成

    DAOでテーブルを作成したいのですが 主キーにしてオートナンバー型にするにはどうすればいいですか? Sub MyTableCreate() Dim db As DAO.Database Dim tbdef As DAO.TableDef Dim Field1 As DAO.Field Dim Field2 As DAO.Field Set db = CurrentDb Set tbdef = db.CreateTableDef("T_test") Set Field1 = tbdef.CreateField("ID", dbInteger) Set Field2 = tbdef.CreateField("氏名", dbText, 20) tbdef.Fields.Append Field1 tbdef.Fields.Append Field2 db.TableDefs.Append tbdef db.Close: Set db = Nothing End Sub これで、IDフィールドを主キーにしつつ、 dbIntegerではなくオートナンバー型にしつつ、 主キーを付与する方法を教えてください。 DAOのType プロパティのヘルプを見たのですがありませんでした。 今回は http://www.accessclub.jp/dao/20.html を参考にしました。

  • Access :ALTER TABLE で作成した文字列フィールドがトリミングされない

    いつもお世話になっております。 Access2000を使用しております。 Accessで作成した、あるシステムのバージョンアップを行っております。 その際、複数のテーブルにフィールドを追加する移行プログラムを作成しております。 Dim DB As DAO.Database Set DB = OpenDatabase("外部DB.MDB") DB.Execute ("ALTER TABLE 既存テーブル ADD 追加フィールド CHAR(255)") DB.Close 'データベースを閉じる Set DB = Nothing 上記のようなプログラムを走らせたのですが、 作成された追加フィールドにデータを入力すると、 入力した値の後に指定サイズ分の空白文字ができてしまいます。 つまり、10文字入力した場合 255-10=245文字が空白として登録されてしまいます。 Unicode圧縮プロパティのせいかな、と思い、 Dim TBL As DAO.TableDef Dim FLD As DAO.Field Dim prUC As DAO.Property Set TBL = DB.TableDefs("既存テーブル") Set FLD = TBL.Fields("追加フィールド") Set prUC = FLD.Properties("UnicodeCompression") prUC.Value = True と、フィールド追加後にプロパティを変更してみたりもしたのですが、 やはり、空白が出てしまいます。 作成したフィールドの空白文字がセットされないようにするにはどのようなことを行えばよいのでしょうか。 ご教授のほど、宜しくお願い致します。

  • AccessVBAでフィールドのデータ型(フィールドサイズ)を変更する方法

    Access2000でテーブルを属性を変更しようとVBAで四苦八苦しております。 あるテーブルのフィールドのデータ型のフィールドサイズが「十進型」に なっています。 そのフィールドサイズを「倍精度浮動小数点型」に変更するVBAロジックがわかりません。 お分かりの方がいらっしゃいましたらどうかご教示願います。

  • access フィールドのサイズ(文字数)変更

    とても単純な質問で申し訳ないのですが、 Access2000でつくったテーブルにデータを入力しようとしたら、 「指定されたデータ量がフィールドサイズを超えています。」と表示されます。文字数を変更すればよいことですが、デザインビューでプロパティをみても文字数を変更するところがありません。(フィールドのサイズは変更できるのですが)。どのようにすればよいか教えていただけますか?

  • フィールドの入れ替えはできますか?

    PostgreSQL 8.1.4を使用しています。 仕様の変更によりテーブルへフィールドの追加を行なったのですが、このフィールドの位置を変更する事はできるのでしょうか。 DDL文を整えて作った空のテーブルへデータをリストアしようとしましたがうまくできませんでした。 よろしくお願いします。

  • AccessのDAOでフィールド名を配列に格納して・・・

    Access2000のDAOで下記のようなコードで複写元テーブルから複写先テーブルにデータを追加するとします。 Set Rs1 = Db.OpenRecordset("複写元", dbOpenTable) Set Rs2 = Db.OpenRecordset("複写先", dbOpenTable) Do Until Rs1.EOF Rs2.AddNew Rs2!FL1 = Rs1!名前 Rs2!FL2= Rs1!性別 Rs2!FL3= Rs1!郵便番号 Rs2!FL4= Rs1!住所    ・    ・ Rs2! FL50= Rs1! 50番目 Rs2.Update Rs1.MoveNext Loop 複写元のフィールドが50フィールドもあると、いちいちRs1!名前とかRs1!性別とか記述するのが大変ですし、ものすごく長いコードになります。そこで、配列にしてやったらどうだろうかとこんなことをしてみましたがだめでした。 Dim I Dim FieldsName FieldsName=Array("名前","性別",・・・"50番目")            ・            ・ Do Until Rs1.EOF Rs2.AddNew For I=0 To 49 Rs2!フィールド(I) = Rs1!FieldsName(I) Next Rs2.Update Rs1.MoveNext Loop じゃあTebleDifのTd.Fields().Nameを使って・・・・やっぱり失敗しました。 For I=0 To 49 Rs2!フィールド(I) = Rs1!Td.Fields(I).Name Next やりたいこと分かっていただけますでしょうか?要するにフィールド名を配列の様なもので格納しておいて、レコードの追加時に50回ループさせてRS2のフィールドにいれたいのです。何か良い方法は無いでしょうか。

  • DAOでACCESSをREADしてEXCELに表示

    お世話になります。 初心者ですが、DAOを使ってACCESSのテーブル(名称”テーブル1”)を全READして全データをEXCELに表示するところまでは出来ました。 (やりたいこと1) 今度は下記の様に"ボタン1"をクリックされたら、Accessに下記の様なデータ(今は"taro"という固定でデータですが将来的には可変的する予定です)を追加したいのですが、既にAccess側に社員番号と氏名が同じレコードがあった場合には追加させないロジックを追加したいのです (やりたいこと2) "ボタン1"をクリックした時に、追加される"taro"のデータはAccessの"テーブル1"の一番下に追加されるようにしたいです。現在は中途半端にテーブル1の真ん中あたりに追加されます。 上記2点につきまして、どなたかご教授いただけませんでしょうか? よろしくお願い致します。 環境 Windows XP SP3 Excel2003 Sub ボタン1_Click() Dim rst As DAO.Recordset Dim fld As DAO.Field Dim sht As Worksheet Dim rcnt As Long, ccnt As Long '行カウンタ、列カウンタ ' On Error GoTo Err_DAOSample If DBE Is Nothing Then Set DBE = New DAO.DBEngine End If If DB Is Nothing Then Set DB = DBE.OpenDatabase("C:\TEST.mdb") End If Set rst = DB.OpenRecordset("SELECT * FROM テーブル1", dbOpenDynaset) Set sht = ActiveSheet ' レコード追加 With rst .AddNew .Fields("社員番号") = "00000010" .Fields("氏名") = "taro" .Fields("所属") = "管理部" .Fields("年齢") = 19 .Update End With End Sub

  • レプリケーションしているテーブルに対する列追加やフィールドタイプの変更

    お世話になります。 レプリケーションしているテーブルに対して、列(フィールド)の追加や フィールドタイプを変更しようとすると、レプリケーション絡みのエラー が発生します。 テーブル 'xxxテーブル' - テーブルを修正できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server]レプリケー ションで使用されているので、テーブル 'dbo.xxxテーブル' を 削除 できません。 その都度、当該テーブルを使用しているパブリケーションをいったん削除し、 列の追加やフィールドタイプの変更後、再度パブリケーションを作成して いる次第です。 パブリケーションを削除せず列を追加したり、フィールドタイプを変更する方法 はございますでしょうか。ご教授願います。