VBの画面からACCESSのテーブルを取得したいのですが
どういうふうに記述すればいいかわかりません。
サンプルプログラムとともにおしえてください。
DAOというので接続したいと思っています。

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

A 回答 (3件)

まず、参照設定でMicrosoft DAOにチェックをつけます。



で、コーディングですが、以下のような感じです。
不明点とかあったら、補足にてご質問ください。

Private Sub Command1_Click()
  Dim DB As DAO.Database
  Dim RST As DAO.Recordset
  Dim SQL As String
  
  'データベースを開く
  Set DB = DAO.OpenDatabase("X:\XX\db1.mdb")
  
  '「テーブル1」をスナップショット(読み込み専用モード?)で開く
  Set RST = DB.OpenRecordset("テーブル1", dbOpenSnapshot)
  
  'テーブル1のID列を書き出します。
  Do Until RST.EOF
    Debug.Print RST![ID]
    RST.MoveNext '次のレコードに移動
  Loop

  'レコードセットとデータベースを閉じる
  RST.Close
  DB.Close
End Sub
    • good
    • 1

こんにちはxruzです。


MSのライブラリはいかがでしょうか?
下記URLの左側のメニューで
VisualBasic6.0ドキュメント
→VisualBasicドキュメント
-→MicrosoftDAO3.60

結構やさしく書いてありますのでご覧になって損はありません。

参考URL:http://www.microsoft.com/japan/developer/library …
    • good
    • 1

参考URLのところで簡単な手順だけはわかるとおもいます。



蛇足かもしれませんが、忠告をひとつ。その Access のテーブルは共有される、
つまり、複数の VB の画面から同じに更新されたりはしないですよね?

Access って、そういう用途に耐えられるようには作られていませんので、注意
してください。

# ちなみに、私は計算機屋さんですが、VB や Access なんかは使ったことは
# 無いので、自信無しです。

参考URL:http://homepage2.nifty.com/inform/vbdb/
    • good
    • 0

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

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

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

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

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

Q別のパソコンを介してのインターネット接続は可能か?

現在 ネット接続されているマシン(XPPro パソコン1)に
もう1台マシン(XP home パソコン2)を接続して
パソコン2からパソコン1を経由してネットに接続することは可能でしょうか?

・・どうしてもそれしか方法がないので
どうかお知恵をお貸しください

Aベストアンサー

私も同じように考えて色々やりました。この質問とは回答が違うかと思いましたが、参考までに私のやった方法を言いたいと思います。
その方法ですが、たまたま2台のパソコンにIEEE1394接続が出来る状態でしたので、パソコン1とパソコン2をつなげて、両方で同時にネットが使えるようにしました。
ただ、2年程前に設定してそれから何もいじってないのであまり詳しく覚えてないのですが・・・。
確か、ネットワークセットアップウィザードか新しい接続ウィザードを行って(両方のパソコンでやります。)それから、パソコン2の方の1394接続のアイコンを右クリックして、ブリッジ接続をすれば出来たように思いますが、ただ1394接続がなければこの意見は意味がないですね。

Qロジスティック曲線作成 vb6サンプルプログラム

ロジスティック曲線作成 vb6サンプルプログラム

お世話になります

vb6でロジスティック曲線の値を求めるサンプルソースを探しております。

サンプルを元に作成したい処理は以下となります

右上がり(右増分)の曲線

サンプルの計算式があれば、以下の様に改造を考えております

引数は
YMax : 縦軸の最大値
XMax : 横軸の最大値
T_Val : 閾値
Table(XMax) : 戻り値

言葉で説明すると
YMaxが100ならば、求める値の増分幅は0~100で
XMaxが200ならば、Table(200)に100が入る
T_Valが小さければ、比例に近く
T_Valが大きければ、曲線がきつくなる
T_Valの範囲はサンプルソース依存で構いません

Aベストアンサー

ロジスティック曲線の性質上、

>XMaxが200ならば、Table(200)に100が入る
>T_Valが小さければ、比例に近く
>T_Valが大きければ、曲線がきつくなる

とするのは難しいと思います。

蛇足ですが、
ベジェ曲線ですと、上記のようなものができそうです。
ただし、xとyの関係が媒介変数(t)を介しての記述となるため、xが○のときyは●、という計算が簡単にはできません。

以下サンプルです。
エクセルVBAです。
B1セルにXMax、B2セルにYMax、B3セルにT-Val(ゼロ以上1以下)を入力してください。
マクロ実行すると、A7セル以下にxの値、B7セル以下にyの値が表示されます。

----------------

Sub test()

x1 = 0
y1 = 0
x4 = Cells(1, 2)
y4 = Cells(2, 2)

x2 = (x4 - x1) * Cells(3, 2)
y2 = y1
x3 = (x4 - x1) * (1 - Cells(3, 2))
y3 = y4

div = x4

For i = 0 To div
t = i / div
tp = 1 - t

x = t * t * t * x4 + 3 * t * t * tp * x3 + 3 * t * tp * tp * x2 + tp * tp * tp * x1
y = t * t * t * y4 + 3 * t * t * tp * y3 + 3 * t * tp * tp * y2 + tp * tp * tp * y1

Cells(7 + i, 1) = x
Cells(7 + i, 2) = y
Next

End Sub

ロジスティック曲線の性質上、

>XMaxが200ならば、Table(200)に100が入る
>T_Valが小さければ、比例に近く
>T_Valが大きければ、曲線がきつくなる

とするのは難しいと思います。

蛇足ですが、
ベジェ曲線ですと、上記のようなものができそうです。
ただし、xとyの関係が媒介変数(t)を介しての記述となるため、xが○のときyは●、という計算が簡単にはできません。

以下サンプルです。
エクセルVBAです。
B1セルにXMax、B2セルにYMax、B3セルにT-Val(ゼロ以上1以下)を入力してください。
マクロ実行する...続きを読む

Q至急!!!!!!パソコンの接続

至急です!!!!パソコンの接続

パソコンの接続はヤフーモデム(ヤフーBB)から接続してありますが 実家に帰るので
そのパソコンを持って行きますが接続ができるかどうか不安です。ちなみに
ヤフーのモデムではありません。 micro?というモデムです。。
そのままつなぐだけで接続できますか?
教えてください。

Aベストアンサー

質問からするに、実家での契約はあるようですが、接続できるかどうかはわかりません。
固定IP契約をしていて、macアドレスがパソコンのものを使われてると、あなたのパソコンとつなぎ変えても接続できません。
固定IPではないか、ルータのmacアドレスで登録してれば、接続することは可能です。
ただしパソコンの設定は変更する必要があるかもしれません。

QAccess 2000 の VB での テーブル作成について質問です。

下記のようにAccess 2000のVBからDAOを使ってテーブルを作っておりますが、
作るフィールドに規定値の設定もVBからできないのでしょうか?DAOだと無理なのでしょぅか?
教えてください

Dim db As DAO.Database
Dim tbdef As DAO.TableDef

Dim flID As DAO.Field

Set db = CurrentDb
Set tbdef = db.CreateTableDef("テーブル")

Set flID = tbdef.CreateField("ID", dbInteger)
  tbdef.Fields.Append flID
  db.TableDefs.Append tbdef
db.Close: Set db = Nothing

Aベストアンサー

flID.DefaultValue = 7
見たいな感じでできると思います^-^

Qノートパソコンがインターネットに接続できない。

ご質問します。仕事の事務所で使用しているノートパソコンですが、事務所ではインターネットに接続できますが、家のルーターに接続してインターネットを使用するとこの様なエラーメッセージが出て接続できません。「接続状態:限定または接続なし」と表示されてインターネットに接続できません。家で使用しているディスクトップパソコンとノートパソコンはインターネットに接続できます。仕事で使用しているノートパソコンを家でネットワークに接続する方法はありませんか。ご回答をお願い致します。

Aベストアンサー

>仕事で使用しているノートパソコンを家でネットワークに接続する方法はありませんか。
こんな事やっていいのでしょうか?

基本的にはネットワークの設定が違うと思われます
会社ではサーバーを介していると思われます
ツール → インターネットオプション → 接続 → LANの設定
これの内容が自宅と違うはずです
従ってこれを自宅と同じにすれば良いですが・・・・
先頭の疑問へ戻ってしまいます

QVB.NETからAccessテーブルの文字列を操作する際・・

VB2005からAccessのmdbのテーブルのあるカラムより数バイトを切り出して別のカラムにコピーするだけの単純なプログラムなのですが、以下のように30バイトや34バイトで切り出しているにもかかわらず16バイトしか入ってきません。


cn.ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0;" _
& "Data Source = d:\csmain\cstool\egz0omen.mdb"
cn.Open()

com = cn.CreateCommand()
com.CommandText = "select カラムA from T_テーブル"

dread = com.ExecuteReader
Do While (dread.Read())
com = New OleDb.OleDbCommand("update T_テーブル set カラムB = LeftB(カラムA, 30), " _
& " カラムC = LeftB(カラムA, 34) , " _
  & " カラムE = LeftB(カラムA, 36) ")

com.Connection = cn
com.ExecuteNonQuery()
Loop

<実行結果>
カラムA            
123456789012345
カラムB~カラムE全て
12345678

試しにバイト数を10バイトずつ増やして、30→40、34→44、36→46にしても結果は同じでした。
宜しくお願い致します。

VB2005からAccessのmdbのテーブルのあるカラムより数バイトを切り出して別のカラムにコピーするだけの単純なプログラムなのですが、以下のように30バイトや34バイトで切り出しているにもかかわらず16バイトしか入ってきません。


cn.ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0;" _
& "Data Source = d:\csmain\cstool\egz0omen.mdb"
cn.Open()

com = cn.CreateCommand()
com.CommandText = "select カラムA from T_テーブル"

dread = com.ExecuteReader
...続きを読む

Aベストアンサー

ADO.NETでは、旧ADOのような、「カラム別に編集して1レコードずつUpdateメソッドで簡単に更新」
といった処理は出来ません。少なくともDataReaderでは無理です。
(DataAdapter、DataSetを使えば似たようなことは出来ますが、あちらは
 プログラムから単純に見たら、基本的に一括更新です)
で、今回の形でやるなら、結局UpdateのSQL Commandを実行するしか
ないと思いますが、そこで気になることが2つ。
1.SQLにLeftBなんて関数は存在しません。
  割と多くの初心者が勘違いされるようなんですが、SQL文は、あくまで
  「DBに渡す、DB用の命令を記述した、ただの文字列」です。
  SQL文の中に、VB内で使用している変数名を直接書いたり、VBの関数を
  直接書いたりしても、勝手に置き換えたりは してくれません。
  LeftBに類似したSQL関数は、DBによっては存在しますが、Accessだと無理っぽいですね。
  (後述の通り、VB2005にもLeftBは無いんですけどね)
2.SQL Update文に、WHERE句がありません。
  ループして1レコードずつ更新するなら、あくまで1回ごとのUpdate文の中で、
  更新対象のレコードを指定するWHERE句が必要です。

使用するSQL文は、各カラムがテキスト型だとすると、
"update T_テーブル set カラムB = '" & _
LeftB(カラムA, 30) & "', カラムC = '" & _
LeftB(カラムA, 34) & "'," カラムE = '" & _
LeftB(カラムA, 36) & "' WHERE (検索条件はご自分で設定してください)"
みたいな感じかな?
(数値型の場合は、シングルクオートの編集を外してください)
なお、VB2005にLeftB関数は存在しませんので、自作する必要があります。
(やり方としては、Shift-JISにエンコードしてから切り出して、Unicodeに戻すんだけど…
 これについては、検索すればどこかにあるんじゃないかな)

余談ですが、ADO.NETについて踏み込んで勉強したい場合は、参考URLあたりが
結構いいと思います。多少難解ですが。

参考URL:http://www.atmarkit.co.jp/fdotnet/basics/adonet_index/index.html

ADO.NETでは、旧ADOのような、「カラム別に編集して1レコードずつUpdateメソッドで簡単に更新」
といった処理は出来ません。少なくともDataReaderでは無理です。
(DataAdapter、DataSetを使えば似たようなことは出来ますが、あちらは
 プログラムから単純に見たら、基本的に一括更新です)
で、今回の形でやるなら、結局UpdateのSQL Commandを実行するしか
ないと思いますが、そこで気になることが2つ。
1.SQLにLeftBなんて関数は存在しません。
  割と多くの初心者が勘違いされるようなんですが、SQL...続きを読む

Qファイルと設定の転送ウィザードをクロスLANケーブルで繋げて転送を試みているのですが、お互いのパソコンの接続が出来ません

ファイルと設定の転送ウィザードをクロスLANケーブルで繋げて転送を試みているのですが、お互いのパソコンの接続が出来ません。
古い方には1394接続とローカルエリア接続と2つの接続が出てきているのですが、新しい方のパソコンには1394接続しか出てきません。
古い方のパソコンのローカルエリア接続のインターネットプロトコルのアドレスを自動的に取得するのチェックを外し、IPアドレスとサブネットマスクに詳細に載っている数字を入れると!マークは消えて接続状態のようになりましたが、転送ウィザードで接続先が無いとコメントが出ます。
2台のパソコンの接続設定のやり方を教えていただけないでしょうか?
宜しくお願いします。

Aベストアンサー

ANo.1のかたのおっしゃるとおりですが、いくつか原因が考えられます。

・LANが無効になっている(Windowsレベルで、BIOSレベルで)
・LANのデバイスドライバがインストールされていない
 自作PCなどではありがちです。別途マザーボードについてくるドライバCDからインストールしないといけません。
・LAN制御ユティリティがLANを管理している
 一部のLANを管理するユティリティは、「ネットワーク接続」からLANを隠してしまうことがあります。この場合は、そのユティリティからLANの設定をすればいいのですが。

QDAOでテーブルの内容を検索したいのですが…

DAOでテーブルの内容を検索したいのですが…
アクセス初心者です。
フォームで取得した値をテーブルで検索して命令するために,次のようなことをしてみましたが,FindFirstのところでエラーがでます。
どうしたらよいのかご指導ください。

コマンドボタンのイベントプロシージャで


Private Sub テストテーブル作成_Click()
Dim gakki As Integer
Dim test As Integer

Me.学期 = gakki
Me.テスト = test

Call testテーブル作成


End Sub


として,標準モジュールに

Sub testテーブル作成()


Dim myDB As DAO.Database
Dim myRS As DAO.Recordset

Set myDB = CurrentDb
Set myRS = myDB.OpenRecordset("T_生徒テスト")
myRS.FindFirst "学期ID=" & "" & "gakki" & "" & "AND テストID =" & "" & "test" & ""

If myRS.NoMatch = False Then
DoCmd.OpenQuery "Q_TSテストA"
DoCmd.OpenForm "F_テスト"
DoCmd.Close

Else

DoCmd.OpenQuery "Q_TSテスト"
DoCmd.OpenQuery "Q_テスト"
DoCmd.Close
DoCmd.OpenForm "F_テスト"

End If

myRS.Close: Set myRS = Nothing
myDB.Close: Set myDB = Nothing

End Sub

としました。よろしくお願いします。

DAOでテーブルの内容を検索したいのですが…
アクセス初心者です。
フォームで取得した値をテーブルで検索して命令するために,次のようなことをしてみましたが,FindFirstのところでエラーがでます。
どうしたらよいのかご指導ください。

コマンドボタンのイベントプロシージャで


Private Sub テストテーブル作成_Click()
Dim gakki As Integer
Dim test As Integer

Me.学期 = gakki
Me.テスト = test

Call testテーブル作成


End Sub


として,標準モジュールに

Sub tes...続きを読む

Aベストアンサー

F_テストではテキストボックスなどの名前は
あらかじめ設定してあるものとして、以下のように
変更してみてください。


>Forms(F_テスト).RecordSource = "Q_TSテストA"
>Forms(F_テスト).Visible = True



Forms!F_テスト.RecordSource = "Q_TSテストA"
Forms!F_テスト.Visible = True


>Forms(F_テスト).RecordSource = "TS_テスト"
>Forms(F_テスト).Visible = True



Forms!F_テスト.RecordSource = "TS_テスト"
Forms!F_テスト.Visible = True

Qノートパソコンを据え置き型パソコンにUSB接続してインターネット

 既にインターネット接続している据え置き型パソコンに、ノートパソコンをUSBケーブルでつないで、安価な設備投資でインターネット接続する方法を教えてください。

 PCカードを準備してLAN接続すれば、既にインターネット接続している据え置き型パソコンを通してインターネットができることは確認しています。
 
 インターネット接続している据え置き型パソコンとノートを、USBリンクケーブルでつなげば、可能なんだと思いますが、定価で7~8,000円。もっと安いUSB接続で、インターネットを実現できませんか。USB延長ケーブルでは無理なのですか。USB延長ケーブルで可能な場合、何か必要なソフトがありますか。
 

Aベストアンサー

まだ、締め切っていなかったので・・・
>切らずに、延長USBケーブルをそのままパソコン同士でつないで、
これが、できないのです(形が違って挿せない)

電源は、マザーボードから、接続されているので、ソフト的には切れない用になっていると思います。

そういうことを、解決するようにした物が、USBリンクケーブルなのですよ!

また、#3で書いた3のLANは
全て新規に購入したとしても、5~6千円で出来ますよ。
デスクトップ用カード 約2,000円
ノート用カード    約3,000円
クロスケーブル    約1,000円
です。

QDAOでSQLServerに接続し、LeftJoinで別DBのテーブル

DAOでSQLServerに接続し、LeftJoinで別DBのテーブルを参照したい。

いつもお世話になっております。
標題についてなのですが、
VB6.0、SQLServer2008Expressで開発を行なっております。
接続にはDAOを利用しています。

その際に、AというDBのT1というテーブルとBというDBのT2というテーブルのデータを結合して抽出したいのですが、エラーが出てしまいます。
ソースは以下の通りです。

Dim DBR As Database
Dim T_TEST As Recordset

Set DBR = Workspaces(0).OpenDatabase("", False, False,
        "ODBC;Driver={SQL Server};SERVER=hoge;DATABASE=A;UID=sa;PWD=admin")
Set T_TEST = DBR.OpenRecordset("select * from T1 left join B.dbo.T2 on T1.AAA = T2.AAA")

で実行すると、T_TESTをOPENするところで、実行エラー3024が発生します。
エラー内容は「ファイル C:\*******\B.dboが見つかりません」と、ソースが保存されているフォルダにB.dboがありませんといった内容です。
クエリは、ManagementStudioでは問題なく抽出できました。

DBRでAを開いて、Bが開けていないからだとは思うのですが、どのようにすれば複数のDBに存在するテーブルのデータを結合して取得できるでしょうか。
ご教授お願いいたします。

DAOでSQLServerに接続し、LeftJoinで別DBのテーブルを参照したい。

いつもお世話になっております。
標題についてなのですが、
VB6.0、SQLServer2008Expressで開発を行なっております。
接続にはDAOを利用しています。

その際に、AというDBのT1というテーブルとBというDBのT2というテーブルのデータを結合して抽出したいのですが、エラーが出てしまいます。
ソースは以下の通りです。

Dim DBR As Database
Dim T_TEST As Recordset

Set DBR = Workspaces(0).OpenDatabase("", False, False,
  ...続きを読む

Aベストアンサー

Aだけで正常終了しましたか。。。

AがよくてBはだめ。ManagementStudioはOKでVB6ではだめ。

構文は間違いなく合っていますので、あとは、B.dboの部分です。
正式な名称は違うと思いますが、正式名に予約語や全角 2 バイト文字や半角カタカナは入ってませんか?
また、Bの所有者はdboですか?でしたらsaで統一してみるとかとか・・・

Bを疑うような部分がでてきましたら、
データベースをもう一個「TestDB」でのような半角英数字だけの名前で作成してそこに同じテーブルを作成し、テーブルAとLeft Joinしてみてください。
これで表示されるのでしたら、Bのデータベース設定に問題ありでしょう・・・

これ以外だと・・・・ごめんなさい。降参です。。。


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

人気Q&Aランキング

おすすめ情報