• ベストアンサー
  • すぐに回答を!

ADOを使って接続する際、接続時にエラーは起きないのにSQLを実行するとエラーになります。

VB6を使用して業務用アプリケーションを開発しているものです。 VBに関してはほぼ初心者の状態です。 ADOを使用してデータベースにアクセスしています。 接続は下記のような接続文字列で開いています。 Drivers=SQL Server;Server=PowServer\table1; User ID=as;Password=as ちなみに接続先の情報は 接続先名:PowServer データベース名:table1 ユーザID:as パスワード:as です。 上記の接続文字列をADODBのOpenで開くととりあえず接続はできるのですが、Executeで「select * from table1」を実行すると、エラーが発生します。(table1は間違いなく存在します。) ためしにADODB.ConnectionのdefaultDataBaseプロパティが"master"になっていたので、プログラム上で"table1"を設定して再度SQLを実行したところ、今度は結果が無事返ってきました。 エラーの原因はやはりdefaultDataBaseプロパティが"master"になっていたからでしょうか?もしそうでしたら接続文字列の書き方を変更することでdefaultDataBaseを適切に設定することは可能でしょうか? 文が稚拙で申し訳ありませんが、わかる方がいらっしゃいましたらご回答よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数216
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

InitialCatalog=table1 を追加してみてください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。 無事解決することができました。

質問者からの補足

InitialCatalog=table1 ではなく Initial Catalog=table1 のようです。

関連するQ&A

  • VBAでのSQL文によるエラー

    よろしくお願いします。 現在VBAでMySQLに接続し、複数のselect文を実行した結果をcsv出力したいのですが、 select文にinto outfileを入れると、 「オブジェクトが閉じている場合は、操作できません」のようなメッセージが出てしまいます。 普通のselectや、where付のselectに変えたところ、このエラーは出ませんでした。 以下サンプルコードです。 Dim cnct As ADODB.Connection Dim slct01 As ADODB.Recordset Dim slct02 As ADODB.Recordset Dim cnstSTR As String Dim sql01 As String Dim sql02 As String '接続文字列 cnstSTR = "Driver={MySQL ODBC 5.1 DRIVER};"・・・(←接続文字列は省きます) Set cnct = New ADODB.Connection cnct.Open cnstSTR Set rs = cnct.Execute("select * from table01 into outfile " & "'C:/test/test01.csv'" & " FIELDS TERMINATED BY ',';"")←ここ Set ds = cnct.Execute("select * from table2" into outfile " & "'C:/test/test02.csv'" & " FIELDS TERMINATED BY ',';"") 'テーブルのクローズ slct01.Close slct02.Close 'データベースのクローズ cnct .Close Set slct01= Nothing Set slct02= Nothing Set cnct = Nothing やはりinto outfileが原因でしょうか。。。 ソースの修正や、csv出力で他にいい方法あったら教えてください!! よろしくお願いします!!!

  • SQLで別テーブルの参照

    こんにちは。 PostgreSQL+Perl+DBIでCGIを書いています。 テーブルからデータを取得する場合なのですが、table1にはIDのみが登録されていて、table2には、そのIDに対する文字列が登録されているとします。 このような場合に、tableからIDを取得して、そのIDに対するtable2の文字列を一気に取得することは可能でしょうか? つまり、 $dbh=DBI->connect(~); $sth=$dbi->prerare("SELECT id FROM table1 WHERE ~;"); $sth->excecute(); $id=$sth->fetchrow; $sth->finish(); $sth=$dbi->prerare("SELECT str FROM table2 WHERE id=$id;"); $sth->excecute(); $str=$sth->fetchrow; $sth->finish(); $dbh->disconnect(); といった処理をこんな感じに一度に行いたいのです。 $dbh=DBI->connect(~); $sth=$dbi->prerare("~~~~~;"); $sth->excecute(); $str=$sth->fetchrow; $sth->finish(); $dbh->disconnect(); 可能かどうかもわからないのですが、なにか良い方法はありますでしょうか?よろしくお願いします。

  • ASP + SQLにて

    お世話になっております。 このたびASPを使用し、SQL Serverへデータをいれ管理プログラムを作成しているのですが、一部データの取り出しがわからないのでご質問させていただきます。 SQL文を発行する際に、 strSQL = "select * from table1 left join table2 on table1.社員ID = table2.ID order by table1.ID desc" としております。 構造として table1にはID,日付,内容,社員IDがありまして table2にはID,社員名があります。 上記のSQL文を実行し、 <% response.write objRS("社員名") %> として社員名を出力しているのですが、 そのときtable1のIDを出力しようとして <% response.write objRS("ID") %> としたらtable2のIDが出力されてしまいました。 table1のIDを出力する方法はないのでしょうか? よろしくお願いいたします。

  • SQLを教えて下さい

    SQL文を教えて下さい 以下の2つのテーブルがあります。 TABLE1 --------------- ID,NAME,PRICE --------------- 1,部品A,100 2,部品B,200 3,部品C,300 TABLE2 --------------- ID,NAME,PRICE --------------- 1,部品Aのサブ1,1 1,部品Aのサブ2,2 2,部品Bのサブ1,5 2,部品Bのサブ2,5 --------------- SELECT TABLE1.NAME TABLE2.NAME TABLE1.PRICE TABLE2.PRICE WHERE TABLE1.ID = TABLE2.ID(+) TABLE2.PRICE = (SELECT MAX(?) ?) 期待する結果 ・TABLE1.NAME = 部品Aの場合 --------------- 部品A,部品Aのサブ2,100,2 ・TABLE1.NAME = 部品Bの場合 --------------- 部品B,部品Bのサブ1,200,5 TABLE1.NAME = 部品Cの場合 --------------- 部品C,,300, ・TABLE1のNAMEに、TABLE2のNAMEが関連付く(付かないものもある) ・外部結合とMAX関数を用いたい。 ・TABLE2のPRICEが大きい方を取得(同一の場合は、どちらかを取得)

  • sql: update またはinsert を判断して1回で実行するには

    わかりやすいように単純にしていますが table1に ID と titleフィールドがあるとして、 update table1 set title = 'no1' where ID = '1' と insert into table1 (ID,title) values ('1','no1') これを一個にまとめたいのですが、 一回のSQLで 指定したIDが なければ、挿入、存在すれば、アップデート みたいな処理は可能でしょうか? CASEとかEXISTS とかの組み合わせでできますでしょうか? 最近まで、SQLを利用したデータベースほとんど 利用していなかったので 初歩的なことで申し訳わけありませんが インターネットの解説サイトをみてもわからないので SQLの本を購入しましたが届くのが来週以降なので もし できるのでしたら、 使う関数名だけでもいいので教えてください。

  • 複数のテーブルを参照して値を変更する方法

    お世話になっております。 以下のようなテーブルがあったとして、table1,table2の値を参照して加算し、master_tableの値を変更するようなSQLは一つの文で書く方法はありますでしょうか? 例えば、あるSQLを実行すると、master_tableのid1のscoreが500になるようなSQLです。 どなたかご教授ください。 master_table id | score 1 | 0 2 | 0 table1 id | score 1 | 100 2 | 300 table2 id | score 1 | 400 2 | 100

    • ベストアンサー
    • MySQL
  • ACCESS 更新 ADO Filter Do Until

    いつもお世話になっております。 ACCESSのフォームに作成したコマンドボタンを実行すると TABLE1からTABLE2へID番号を元に値を更新するようなプログラムを 作りましたが、うまく動きません。 ご指摘お願いします。 参考までに画像を添付します。 Dim CN As New ADODB.Connection Dim rsA As New ADODB.Recordset Dim rsB As New ADODB.Recordset Set CN = CurrentProject.Connection rsA.Open "TABLE1", CN, adOpenKeyset, adLockOptimistic rsB.Open "TABLE2", CN, adOpenKeyset, adLockOptimistic Do Until rsA.EOF rsB.Filter = " ID = '" & rsA!ID & "'" Do Until rsB.EOF rsB!名前 = rsA!名前 rsB!価格 = rsA!価格 rsB.Update Loop rsA.MoveNext Loop rsB.Close: Set rsB = Nothing rsA.Close: Set rsA = Nothing CN.Close: Set CN = Nothing

  • SQL文 テーブルの作成方法について

    以下のようなTABLE1からTABLE2というテーブルを作成したいと考えております。 元テーブル(TABLE1)は、IDという項目がキーとなってデータが入っており、NAME1とNAME2という項目があります。 (NAME1は必ず値が入っていますが、NAME2は値が入っていない場合もあります) 加工後のテーブル(TABLE2)で、NAME1とNAME2の値を結合した形で結果を出力したいと考えております。 (新たに作成したNAMEカラムは、必ずしもユニークになっているとは限りません。NAMEとIDを組み合わせるとユニークになります) ---------------------------------------------------- ■ TABLE1 ID NAME1 NAME1_CATE NAME2 NAME2_CATE ---------------------------------------------------- 001 鈴木 A 山田 B 002 山本 A 003 佐藤 A 高橋 B ---------------------------------------------------- ---------------------------------------------------- ■ TABLE2 ID NAME NAME_CATE ---------------------------------------------------- 001 鈴木 A 001 山田 B 002 山本 A 003 佐藤 A 003 高橋 B ・・・ ---------------------------------------------------- いろいろ試していますが、どのようなSQL文を書いたらよいのか分かりません。 現状のSQL(エラーとなります) ====================================================================================== SELECT ID, NAME, NAME_CATE FROM (SELECT ID, NAME1 as NAME, NAME1_CATE as NAME_CATE FROM TABLE1 WHERE NAME1<>NULL) JOIN (SELECT ID, NAME2 as NAME, NAME2_CATE as NAME_CATE FROM TABLE1 WHERE NAME2<>NULL) ====================================================================================== 初歩的な質問になるかと思ってしまうかと思いますが、よろしくお願いいたします。

  • MYSQL 異なる DB 結合

    恐れ入ります。 異なるデータベース上、例えば、 database1上のtable1 database2上のtable2 をPerlを使って、table1のcol1 と、table2のcol1の共通IDで結合し、 Web上でデータを表現したいのですが、なかなかうまくいきません。 ご教授いただける方いらっしゃいますでしょうか。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 不明なコマンドです("FROM")。行の残りは無視されました。 のエラー

    T_地点,T_層,T_回 という三つのテーブルがあります。 それを組み合わせるSQLで下記のようなものがあります。 --------- CREATE VIEW V_地点 AS SELECT T_地点.ID, TABLE1.1A, TABLE1.2A, T_回.形 FROM T_地点,T_回, ( SELECT T_層.ID, T_層.点, MAX(DECODE(T_層.コード,'01',1)) 1A, MAX(DECODE(T_層.コード,'02',1)) 2A FROM T_層 GROUP BY T_層.ID ) TABLE1 WHERE T_地点.ID = TABLE1.ID AND T_地点.ID = T_回.ID; --------- これをORACLEのビュー作成で実行するとエラーがでないのですが、 sqlplus経由で実行するとエラーがでます。 SP2-0042: 不明なコマンドです("FROM")。行の残りは無視されました。 SP2-0734: "T_..."で開始するコマンドが不明です - 残りの行は無視されました。 どなたかわかるかたがいらっしゃいましたらご教授ねがいます。