新規会員登録における電話番号登録必須化のお知らせ

VBAを使ってテーブルのフィールド名等を変更させたいと思います。
そういう事ってできるのでしょうか?

フィールド名を作成者ではなく、利用者が設定するようにしたいと思っているのですが、どういった方法があるでしょうか?

よろしくお願いします。

教えて!goo グレード

A 回答 (3件)

>ちなみに、それはどういったやりかたでやったら良いのでしょう?



例えば、[フィールド名対応表]という名前のテーブルで、[フィールド名][変換名]というフィールドを作ります。
で、[フィールド名]には予め実際のテーブルのフィールド名を、正しく入力しておきます。
[変換名]にも初期値として[フィールド名]と同じ値を入力しておきましょう。

まず、変換名の登録は、更新クエリを実行します。
仮に[誕生日]というフィールド名を[生年月日]という名前に変更するとすると、コードは以下のような感じ。


Dim SQL As String 'SQLステートメント

SQL = "UPDATE フィールド名対応表 SET 変更名 = '生年月日' WHERE フィールド名 = '誕生日'"
DoCmd.RunSQL SQL


次にフィールド名に付けられた変更名を拾ってくる方法は、


Dim temp As String '変更名

temp = DLookup("変更名", "フィールド名対応表", "フィールド名 = '誕生日'")


ちなみに、DLookup関数は、条件にあったデータの値を返す関数ですが、条件にあったデータがない場合は、Nullを返しますので注意して下さい。
    • good
    • 0
この回答へのお礼

大変わかりやすい説明、ありがとうございます。

ただ、利用者によってフィールドが幾つできるか分からないんです。
やっぱり上限を決めて設定するようにするしかないんでしょうね?

お礼日時:2002/12/13 15:18

Option Compare Database


Option Explicit
Sub test()
Dim db As Database
Dim tdf As TableDef
Dim fld As Field

Set db = CurrentDb
Set tdf = db.TableDefs!座席
With tdf
.Fields(4).Name = "予約日付"
End With
End Sub
「予約日付」の部分は、n=Inputbox("フィールド名=")とでも聞いてnで置きかえる。
4番目のフィールド「テキスト日付」を「予約日付」に
変更できました。
.Fields("予約日付").Name = "T予約日付"というフィールドの捉え方も出来ます。
    • good
    • 0

こんにちは。

maruru01です。

ADOXを使用すると出来ます。
まず、VBE画面のメニューの[ツール]→[参照設定]で、

「Microsoft ADO Ext. X.X for DLL and Security」(X.Xはバージョン)

にチェックをします。
そして以下のようにコードを書きます。


Dim cat As ADOX.Catalog

Set cat = New ADOX.Catalog
cat.ActiveConnection = CurrentProject.Connection

cat.Tables("テーブル名").Columns("変更前のフィールド名").Name = "変更後のフィールド名"

Set cat = Nothing


ところで、フィールド名を利用者に自由に変更させるやり方は、あまりいいとは思います。
メンテナンスとかコーディングとかで不都合が生じる可能性があります。
フォームなどの表示上の問題なら、元のフィールド名と変更フィールド名の対応テーブルを作り、それを参照して表示を変更するという方がいいと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>フォームなどの表示上の問題なら、元のフィールド名と変更フィールド名の対応テーブルを作り、それを参照して表示を変更するという方がいいと思います。

そうなんです。フォームの表示上の問題なんです。
ちなみに、それはどういったやりかたでやったら良いのでしょう?
超初心者です。
よろしくお願いします。

お礼日時:2002/12/13 12:26

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

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

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング