vb からアクセスのテーブル作成時のプロパティーの設定方法を教えてください。

値要求 のプロパティーを Falseにしたいのですが、DAOでは「フィールドの Required プロパティにアクセスするには、DAO の Required プロパティを使います。」だそうですが ADO、ADOX での設定の仕方がわかりません。
知っている方がおられたら教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

僕のPCのMSDNにあったのですが、ネット上のMSDNで同じページが見つからなかったので、コピペします。



ParentCatalog の例


次のコードで、テーブルをカタログに追加するより前にプロバイダに固有のプロパティにアクセスするための、ParentCatalog プロパティの使用法を示します。

Sub SetAllowZeroLength()

  Dim cnn As New ADODB.Connection
  Dim cat As New ADOX.Catalog
  Dim tbl As New ADOX.Table
  Dim col As New ADOX.Column

  cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
   "Data Source= c:\Program Files\" & _
   "Microsoft Office\Office\Samples\Northwind.mdb;"
  Set cat.ActiveConnection = cnn
  tbl.Name = "MyTable"
  tbl.Columns.Append "Column1", adInteger
  Set col.ParentCatalog = cat
  col.Name = "Column2"
  col.Type = adVarWChar
  col.Properties("Jet OLEDB:Allow Zero Length") = True
  tbl.Columns.Append col
  cat.Tables.Append tbl

End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました!!!

お礼日時:2002/03/02 09:36

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテーブル入れ子にしたらNNではダメ?

赤い背景画像を使ったHTMLにテーブルを3個入れ子で載せました。
下のテーブルのセルに白色、中のテーブルのセル色にグレー、一番上のテーブルのセルに白色を指定しました。

そこへラジオボタンをつけたのですが、本来、枠がない丸いボタンのところに赤の枠ができてしまいます。
IEでは問題ないのですが、NN4.7で確認したらこうなっていました。

デザインを変えずに回避する方法があったら教えてください。
また、NN6.*~だったらOKということはありますか?

Aベストアンサー

こんにちは!

<input type="radio" name="address" value="menber" checked style="background-color:#FFFFFF;">

と style="background-color:#FFFFFF;" を追加してください。

NN6は分かりませんが4.7と7で確認しました。

Mac 側は確認していません・・。

QADOX フィールドのRequiredプロパティを

ADOX フィールドのRequiredプロパティをFalseにしたい

アクセスです。

Sub test()
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
Dim idx As ADOX.Index
Dim varRet As Variant
Dim strMsg As String

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

Set tbl = New ADOX.Table
tbl.Name = "test"

tbl.Columns.Append "氏名ID", adInteger '手作業で数値型のフィールドを作るとこれがデフォルトになる
tbl.Columns.Append "氏名", adVarWChar, 50

cat.Tables.Append tbl

主キーを作る
Set idx = New ADOX.Index
idx.Name = "Primary"
idx.PrimaryKey = True
idx.Columns.Append "氏名ID"

tbl.Indexes.Append idx

MsgBox tbl.Name & "テーブルを作成しました。"

Set cat = Nothing
End Sub
**********************************************************

上記のコードでテーブルを作ると、RequiredをTrueにしてないのに、
実際にテーブルにデータを入れてる時に、NULLにしようとすると、

**********************************************************
フィールドに必要なプロパティが True に設定されているため、
このフィールド '<フィールド名>' には Null 値は挿入できません。値を入力してください。
**********************************************************
となります。

Requiredプロパティの規定値は、False になってますが、
なぜか値を要求されてしまいます。

ADOXで上記のコードに追加してRequiredをFalse にする方法を教えてください。、

ADOX フィールドのRequiredプロパティをFalseにしたい

アクセスです。

Sub test()
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
Dim idx As ADOX.Index
Dim varRet As Variant
Dim strMsg As String

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

Set tbl = New ADOX.Table
tbl.Name = "test"

tbl.Columns.Append "氏名ID", adInteger '手作業で数値型のフィールドを作るとこれがデフォルトになる
tbl.Columns.Append "氏名", adVarWC...続きを読む

Aベストアンサー

当方、Access2010 です。同じ結果になりました。。
無理っぽいと思いつつGoogleと外人さんが教えてくれました。
http://www.pcreview.co.uk/forums/re-change-field-required-property-adox-t1685138.html

tbl.Columns.Append "氏名ID", adInteger '手作業で数値型のフィールドを作るとこれがデフォルトになる
tbl.Columns.Append "氏名", adVarWChar, 50
tbl.Columns("氏名").Attributes = adColNullable '追加

では?

QNN4.7 テーブルの背景を表示出来ますか?

至急教えて欲しいのですが、ネットスケープ4.7でhtmlを確認中ですが。
テーブルへ背景を埋め込むと表示されないようです。
この現象は、NN4.7では無理なのでしょうか?
どなたか助けてくださいm(_ _)m

Aベストアンサー

NN4.7では <table bgcolor="~"> や <table background="~"> は正式にサポートされています。
(Win. Mac. 共にNN4から正式サポート)

但し、NNの仕様でテーブルの各セル内が背景以外何もない場合は背景が表示されません。

おそらく、背景が表示されていない部分は、文字も画像も入れていないのではありませんか?

そのときには、各空白のセルに相当するソース部位に「&nbsp;」(&は実際には半角です)を記述しておきます。
「&nbsp;」(&は実際には半角です)は、空白を表す特殊な記号で、ブラウザには表示されません。

QDAO、ADOについて

お世話になります。
エクセル、アクセスでVBAを勉強しています。
色々な調べましたが、DAO、ADOが今ひとつ
ピンと来ません。
どなたか分かりやすく概要だけでもシンプルに
教えて頂けませんか。
宜しくお願い致します。

Aベストアンサー

まず、DAOについてですが、少々極論になりますが、過去の遺物と割り切って勉強する必要はありません。
上記は個人的見解です。
過去にDAOで作成したソフトのサポート、今までDAOを使っていたのでDAOで制作する方が効率が良い、など、個々人の事情で使用し続けることはあるでしょうが、これから勉強しようという人に対しては、勉強しなくても良いと言い切って良いと思います。

ADOはDAOが進化した、次の世代の機能と考えて良いです。(厳密には違うのでしょうが、そう考えても問題ないという意味で)
ADOは、SQLを発行するインターフェイスと割り切って考えると良いと思います。
対象は、ACCESS、SQLServer、Oracle、MYSQL等、ADOに対応したデータベースサーバーであれば、何でも可能です。

例えばMDBであれば、以下のように接続します。
Private Cn As ADODB.Connection

Set Cn = New ADODB.Connection
Call Cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=****.mdb;User ID=*****;Jet OLEDB:Database Password=******")

他のDBサーバーであれば、Openに書かれる内容が変わります。

Dim Rs As ADODB.Recordset

Set Rs = Cn.Execute("SELECT * FROM [T_TEST] WHERE F_01 = 'abc' ")
Call Cn.Execute("DELETE FROM [T_TEST] WHERE F_01 = 'xyz' ")
あとは、上記のようにSQLをバンバン発行して、DBの内容を取得したり追加したり、書き換えたり、削除したりします。

ADOは(DAOもそうですが)、他にも様々な便利機能がありますが、まず最初に覚える基本的な使い方としてSQLを発行する(発行してレコードを取得する)機能が一番かと思うので。

まず、DAOについてですが、少々極論になりますが、過去の遺物と割り切って勉強する必要はありません。
上記は個人的見解です。
過去にDAOで作成したソフトのサポート、今までDAOを使っていたのでDAOで制作する方が効率が良い、など、個々人の事情で使用し続けることはあるでしょうが、これから勉強しようという人に対しては、勉強しなくても良いと言い切って良いと思います。

ADOはDAOが進化した、次の世代の機能と考えて良いです。(厳密には違うのでしょうが、そう考えても問題ないという意味で)
ADOは、SQ...続きを読む

QIE6/NN7.1のテーブルのheight="100%"

テーブルの高さの指定 height="100%" なんですが、
IE6とNN7.1で100%で表示されません。

下記の記述に間違いはありますでしょうか?
もしかしたら初歩的な問題なんでしょうか?


ちなみにIE5.5 MacのIE5.2では表示されました。
困っています。
宜しくお願いいたします。

ーーーーーーーーーーーーーー
<table border="0" cellspacing="0" cellpadding="0" height="100%">
<tr>
<td valign="top">上</td>
</tr>
<tr>
<td valign="bottom">下</td>
</tr>
</table>
ーーーーーーーーーーーーー

Aベストアンサー

HTML4.01の規格(仕様)では、tableに使えるアトリビュートは、summary、align、widthです。
heightが有効になるほうが特殊だと思ったほうがよいとおもいます

QExcelVBA EnableプロパティがFalseの時に文字の色を変えたくない

ユーザーフォーム上のテキストボックスの内容を変えたくないときにEnableプロパティをFalseにすると、文字の色が灰色に変わってしまいますよね。
色を変えたくないので防ぐ方法はないでしょうか。
また、文字を変更させない方法で、ほかによい方法はないでしょうか。

Aベストアンサー

TextBox1.Locked = True

QNNでテーブルの枠線(BORDER)の設定は?

NN6です。
BORDERを使用したいのですが、NNではうまくいきません。
<TABLE>タグにあてはめるとだめだときいたので、TDにあてはめようとしているのですが…。

HEAD内で
TDにBORDER-STYLE="SOLID; BORDER-COLOR:GRAY;"
としました。これをTD CLASS=***
としているのですが、一向に線は出てきません。
どのように直せばいいのでしょうか?

Aベストアンサー

とりあえずダブルクォーテーションは不要なので削除しましょう。

BORDER-STYLE=SOLID; BORDER-COLOR:GRAY;

それでも出なかったらボーダーの太さも明記しておきましょう。

BORDER-STYLE=SOLID; BORDER-COLOR:GRAY;BORDER-WIDTH:1pt;

QAccessの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のフィールドにいれたいのです。何か良い方法は無いでしょうか。

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!性別とか記述す...続きを読む

Aベストアンサー

#2です。

一応自分なりにコードを作ってみました。

Dim I As Integer, Db As Database, Rs1 As Recordset, Rs2 As Recordset

Set Db = CurrentDb
Set Rs1 = Db.OpenRecordset("複写元")
Set Rs2 = Db.OpenRecordset("複写先")

Do Until Rs1.EOF
Rs2.AddNew
For I = 0 To 49
Rs2.Fields(I).Value = Rs1.Fields(I).Value
Next
Rs2.Update
Rs1.MoveNext
Loop
Rs2.Close
Rs1.Close
Set Rs2 = Nothing
Set Rs1 = Nothing
Set Db = Nothing

でいいと思います。ただし、前提条件として、テーブル「複写先」を作っていないとできませんが。

ご参考までに。

QIE(5.5)とNN(4.7)のフォントサイズについて。

フォントサイズがデフォルトのままだと、IE(5.5)とNN(4.7)とではフォントサイズが違うのです。
IEの方でフォントサイズを「小」にするとNNと丁度良いサイズになるので、
IEでアクセスしたときには強制的にフォントサイズを「小」に変更することなど出来ませんでしょうか?
CSSで「12px」とかにしたんですけど、やはりIEでサイズが「中」になっていると
微妙にサイズが違ってしまうのです。
また、テーブル内のフォントのサイズも同じように変更したいのでNNに対しては融通が利かないのです。
なにとぞお知恵をお貸しくださいませm(_ _)m

Aベストアンサー

これはJavaScriptとの併用である程度解決つきます。
ブラウザによって使用するCSSファイル(この場合は外部ファイルにします。拡張子『.css』)を用意し、<head>~</head>タグ内にブラウザの判別のスクリプトを書く形です。

IE用とNN用で別々のCSSを用意する事によって、かなり近い状態で表示されるはずです(それでもWindows/Mac、他のバージョンを考えると完全に一致させる事は至難の技ですが・・・)。

JavaScriptでのブラウザ判別については、ここの『JavaScirpt』の方で見つかったので、そのリンクを。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=186603

Qプロパティを通さなければアクセスできない変数を設定したい(VB2005)

下記はメンバ変数とプロパティのコードです。
--------------------------------------
'メンバ変数
Private _hoge As Integer = 1

'プロパティ
Private ReadOnly Property phoge()
  Get
    Return _hoge
  End Get
End Property
--------------------------------------

上記の構造だと、同じクラス内であれば、下記のようにメンバ変数へプロパティを通さずアクセスが可能です。

Private Sub aaa()
  MessageBox.Show(_hoge)   ' 1 と表示される(ここでエラーを出したい)
End Sub

質問内容は、変数_hogeに対してアクセスするには、(同じクラス内からのアクセスであっても)プロパティを通さなければならない形にしたい、というものです。

つまり、下記のような形でないとエラーが発生するようにしたいと考えています。

Private Sub aaa()
  Dim foo As Integer = phoge()
  MessageBox.Show(foo)
End Sub

どうぞよろしくお願い致します。

下記はメンバ変数とプロパティのコードです。
--------------------------------------
'メンバ変数
Private _hoge As Integer = 1

'プロパティ
Private ReadOnly Property phoge()
  Get
    Return _hoge
  End Get
End Property
--------------------------------------

上記の構造だと、同じクラス内であれば、下記のようにメンバ変数へプロパティを通さずアクセスが可能です。

Private Sub aaa()
  MessageBox.Show(_hoge)   ' 1 と表示される(ここでエラーを出したい)
E...続きを読む

Aベストアンサー

無理だと思いますよ

Privateのスコープはクラス内で有効ですから同一クラス内からのアクセスを禁止できないです

ReadOnlyプロパティなら即値を返すようにしてやれば _hogeを宣言する必要は無いように思います

別の方法なら そのクラスにPrivateクラスを作成してそのクラスを通してアクセスするようにするかでしょう
たとえば
public Class foo
  Private Class bar
    Private Shaerd _hoge as integer = 1
    Shared readonly property phoge() as integer
      return _hoge
    end Property
  End Class
End Class
といった具合です
これなら fooクラスからは barクラスが使えますが他からは使えません
fooクラスからでも直接_hogeへアクセスも出来ません


人気Q&Aランキング

おすすめ情報