Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1833 / 2272 ツリー ←次へ | 前へ→

【5038】標題とフィールドサイズの設定 ひろのしま 05/5/18(水) 15:38 質問[未読]
【5039】Re:標題とフィールドサイズの設定 小僧 05/5/18(水) 17:11 発言[未読]
【5040】Re:標題とフィールドサイズの設定 ひろのしま 05/5/18(水) 18:49 発言[未読]
【5041】Re:標題とフィールドサイズの設定 小僧 05/5/18(水) 19:32 回答[未読]
【5043】Re:標題とフィールドサイズの設定 YU-TANG 05/5/19(木) 0:06 回答[未読]
【5045】Re:標題とフィールドサイズの設定 ひろのしま 05/5/19(木) 11:30 回答[未読]

【5038】標題とフィールドサイズの設定
質問  ひろのしま E-MAIL  - 05/5/18(水) 15:38 -

引用なし
パスワード
   質問致します。下記のコマンドで、該当テーブルの
該当フィールドに標題とフィールドのサイズを設定したいのですが
フィールドのプロパティに
フィールドサイズ=>.Fieldsize
はあるのですが、"値の取得のみ〜"というメッセージが出てきて設定が出来ま
せん。更に、
標題=>Caption
というプロパティがあるはずなのですが、"メソッドまたはデータメンバがあ
りません。"というメッセージが出てきて設定できません。
これらの設定を行うにはどんな方法をとればよいのでしょうか?
どうかよきアドバイスをお願いします。


Function Moju_プロパティ設定()
Dim TBLdb As Database
Set TBLdb = CurrentDb
  With TBLdb.TableDefs("該当テーブル")
  For FldCnt = 1 To .Fields.Count
    With .Fields(FldCnt - 1)
    If .Name = "該当フィールド" Then
        For PrtyCnt = 1 To .Properties.Count
          .AllowZeroLength = False
          .ValidationRule = ">0"
          .ValidationText = "マイナスはありえません。"
          .DefaultValue = "00000"
          .OrdinalPosition = 0
          
        Next
    End If
    End With
  Next
  End With
TBLdb.Close
Set TBLdb = Nothing
End Function

【5039】Re:標題とフィールドサイズの設定
発言  小僧  - 05/5/18(水) 17:11 -

引用なし
パスワード
   ▼ひろのしま さん:
こんにちは。

DAOではフィールドサイズの設定はできなかったように思われます。
(当方の勘違いかもしれません)

SQLの「ALTER TABLE」を使えば変更ができます。


どのようなデータベースを作成しておられるのかが解りませんが、
基本的にテーブルの設計は途中で変更しないように初期設計を
する方が良いかも…です。

【5040】Re:標題とフィールドサイズの設定
発言  ひろのしま E-MAIL  - 05/5/18(水) 18:49 -

引用なし
パスワード
   ▼小僧 さん:
>▼ひろのしま さん:
>こんにちは。
>
>DAOではフィールドサイズの設定はできなかったように思われます。
>(当方の勘違いかもしれません)
>
>SQLの「ALTER TABLE」を使えば変更ができます。
DoCmd.RunSQL "Create View UKETUKE As Select * From 該当テーブル;"
DoCmd.RunSQL "Alter Table 該当テーブル Change Column 該当テーブル.該当フィールド Text(10);"
DoCmd.RunSQL "COMMENT ON COLUMN 該当テーブル.該当フィールド Is 'れつ';"


>どのようなデータベースを作成しておられるのかが解りませんが、
>基本的にテーブルの設計は途中で変更しないように初期設計を
>する方が良いかも…です。

いずれのコマンドもAccess上では不可能なコマンドです。
で何故これを行う必要があるのか。それは、一度オラクルやSQLサーバー等
で抽出されたCSVデータをインポートする時(列名は日本語でない)に、
Accessの方の列名をアルファベットにする必要があり、標題に日本語名
を記入する必要があったのです。Accessではやはり出来ませんですかね?

【5041】Re:標題とフィールドサイズの設定
回答  小僧  - 05/5/18(水) 19:32 -

引用なし
パスワード
   ▼ひろのしま さん:
こんばんは。

>>SQLの「ALTER TABLE」を使えば変更ができます。
の例です。(当方Access2000)

Sub TEST()
Dim strSql As String

  strSql = "ALTER TABLE T_TEST ALTER COLUMN F1 TEXT(10);"
  CurrentDb.Execute strSql, dbFailOnError

End Sub


>それは、一度オラクルやSQLサーバー等で抽出されたCSVデータをインポートする時
>(列名は日本語でない)に、Accessの方の列名をアルファベットにする必要があり、
>標題に日本語名を記入する必要があったのです。

インポートをどのような方法で行っているかが解りませんが、
「TransferText」メソッドを使用しているのであれば、
第2引数(定義)でインポートの定義が指定できると思います。

もちろん日本語に訳すような器用な機能はついておりませんが…。

またSQLでCSVファイルに直接アクセスする事も可能なようです。
こちらは自分で試した事がありませんので、リンクを紹介させて頂きます。

http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGnrlHowToAttachExternalText.html

【5043】Re:標題とフィールドサイズの設定
回答  YU-TANG WEB  - 05/5/19(木) 0:06 -

引用なし
パスワード
   こんばんは、YU-TANG です。
横レス失礼します。

> 標題=>Caption
> というプロパティがあるはずなのですが、"メソッドまたはデータメンバがあ
> りません。"というメッセージが出てきて設定できません。

Caption プロパティは、作らないと有りません(既定では存在しない)。

CreateProperty で作成してから値を代入する必要があります。
ヘルプに解説と使用例が有りますので、参照してみてはいかがでしょうか。

ちなみに、手前味噌で恐縮ですが、関連リンク。

http://www.f3.dion.ne.jp/~element/msaccess/AcTipsTblChangeFieldProperty.html

【5045】Re:標題とフィールドサイズの設定
回答  ひろのしま E-MAIL  - 05/5/19(木) 11:30 -

引用なし
パスワード
   >Caption プロパティは、作らないと有りません(既定では存在しない)。
>CreateProperty で作成してから値を代入する必要があります。
>ヘルプに解説と使用例が有りますので、参照してみてはいかがでしょうか。
>
>ちなみに、手前味噌で恐縮ですが、関連リンク。
>
>http://www.f3.dion.ne.jp/~element/msaccess/AcTipsTblChangeFieldProperty.html

只今少し模索中ですが、とりあえず下記のようなコマンドになりました。
手前味噌ですが、ご参考ください。

Function Moju_標題IME設定()
Dim Prty As Property
Dim STname As String
Dim Ctlg As New ADOX.Catalog
STname = "テーブル名"
' 表名、フィールド情報
Dim db As DAO.Database
Dim tbDef As DAO.TableDef
Dim fld As DAO.Field
Dim lCount As Long
Set db = CurrentDb
Set tbDef = db.TableDefs(STname)

'標準で用意されていないので、このプロパティを作る
For lCount = 0 To tbDef.Fields.Count - 1
    Set fld = tbDef.Fields(lCount)
    Set Prty = fld.CreateProperty("Caption", dbText, "標題")
    fld.Properties.Append Prty
Next

  For lCount = 0 To tbDef.Fields.Count - 1
    If dbText = (tbDef.Fields(lCount).Type) Then
      With tbDef.Fields(lCount)
      .Properties("IMESentenceMode") = 3
      .Properties("IMEMode") = 3        '3 コントロールなしに
      .Properties("Caption") = "おもて"
      End With
    End If
  Next lCount
  'テーブル作成
  Set tbDef = db.CreateTableDef("フォルダ指定")
  With tbDef
    .Fields.Append .CreateField("Ftx1", dbText, 5)
    .Fields.Append .CreateField("Ftx2", dbText, 6) '
  End With
Set tbDef = Nothing
TBLdb.Close
End Function

1833 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free