朝倉@東京です。

VBで、以下の手順で ODBCデータベースを開きました。

Set wrkODBC = CreateWorkspace("NewODBCWorkspace", "admin", "", dbUseODBC)
Set curDB = wrkODBC.OpenDatabase("", _
dbDriverNoPrompt, _
False, _
"ODBC;" & _
"DATABASE=" & CST_DB_NAME & ";" & _
"UID=;" & _
"PWD=;" & _
"DSN=" & CST_DS_NAME)

その後レコードセットを取得する際に

sql_str = "select * from テーブルA"
Set pb_Rec_F5 = pb_curDB.OpenRecordset(sql_str, dbOpenDynaset)

を実行して、

Data_String=pb_Rec_F5("~フィールド名~")

でテーブルA内の各フィールドを呼び出して各処理を行いました。

ここからなのですが、データの削除を行う必要があって、

sql_str = "delete from テーブルA where Num = 0001"
curDB.Execute sql_str

を実行しようとすると
「ODBC--呼び出しは失敗しました。」(Error.Number 3146)
とエラー表示が出ます。
ODBCの設定なども見ましたがよくわかりませんでした。

構文に間違いがあるのでしょうか?それともODBCの設定?
初歩的な質問ですがご教授お願いします。

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

A 回答 (2件)

Numフィールドのデータ型が文字型の場合、


"delete from テーブルA where Num = '0001'"
を実行してはどうなりますか?
    • good
    • 0
この回答へのお礼

ずばりいけました!
何の事はない、構文が間違ってたんですね・・・お恥ずかしい。
ODBCがどうとかってエラーが出るんで、SQL発行までいってないのかと思ってました。(^^;
どうもありがとうございました。

お礼日時:2001/09/03 10:09

ODBC--呼び出しは失敗しました。

(Error 3146)

ODBC を使用中に、SQL データベースのデータに対して操作を実行しようとしました。
SQL データベースがネットワーク ドライブ上にあり、ネットワークとの接続が切断していると、このエラーが発生します。
ネットワークが接続しているかどうかを確認して再度操作を行ってください。
    • good
    • 0

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

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

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

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

QVB で =Right([nendo],2) & "/06" はどういう事ですか?Right([nendo],2)は?

VB で =Right([nendo],2) & "/06" はどういう事ですか?Right([nendo],2)は?

Aベストアンサー

&="&"
&="""
=Right([nendo],2) & "/06&quot  -> =Right([nendo],2) & "/06"
[nendo]はアクセスのフィールド名か(アクセスのVBA?)。[]で囲むから。
中身は、#2でご指摘の年度で2007とかは行っているのでしょう。
Right関数は文字列の右側、最後から文字数を指定して切り出す。
&は文字列を結合する演算子。
/06をこの順序で結合するもの。

Qiserease のDB2 UDBに対してODBC接続のVBAでSQL

iserease のDB2 UDBに対してODBC接続のVBAでSQLを書いています。
下の構文のWHERE句に対しOR条件を加えると
読むレコードがゼロ件になってしまいました。

QSQL = QSQL & " WHERE TNO='" & PTNO & "'"
QSQL = QSQL & " OR TNO='" & PSPC & "'"

1行目のPTNOの指定だけだと抽出できます。
なぜでしょうか。よろしくお願いします。

Aベストアンサー

同じようにやってみましたが、私は普通にレコードが取得できます。

レコードセットを開く直前に、QSQLをmsgboxか何かに出力して
意図したsqlになっているか再確認してみてはいかがでしょうか。

QSQL ServerへのODBC接続

初めて質問させていただきます。
現在、VB6からSQL Server2005 Express Edition(ローカル)
にODBC接続したいと思っているのですが、手順が
分かりません。

ご存知の方がいらっしゃいましたら、教えていただければと
思います。どうぞ宜しくお願い致します。

Aベストアンサー

Sql Server2005 Expressでは

odbcで、接続できないような。

私も以前試しましたが、出来ませでした。

無料版ではなく、有料版なら、可能かと思います。

QVB6の _ExtentX, _ExtentY

VB6 アプリケーションのメンテナンスをしています。
修正前後で FRM ファイルのソース差分をとって確認したところ、_ExtentX, ExtentY の値が変わっていました。

今回の修正ではいじっていないのですが、変わってしまいまってました。
名前から、水平方向と、垂直方向の領域に関するプロパティと思われるのですがどこで設定されているのか分かりません。

そこで、質問ですが

(1) このプロパティの意味は何でしょうでしょうか
(2) このプロパティ値が変わることによりどのような影響があるのでしょう
(3) このプロパティは意識する必要があるのでしょうか。

以上、ご教示願います。

Aベストアンサー

全くの素人ですが、

1 コントロール(フォーム?)のHIMETRIC単位によるwidthとheight
http://www.xtremevbtalk.com/showthread.php?t=10994
2 フォームのサイズが変わっているのではないでしょうか?
3 フォームは普通意図的にサイズ指定しているはずですので、意識の必要は無いと思います。

QAxMSFlexGridのset_TextMatrixエラー

OS:Windows 2003 Server
言語:VB .NET 2005

AxMSFlexGridLib.AxMSFlexGridのset_TextMatrixエラーが発生します。

VB6からVB.NET2005への移行を行っています。
VB6ではエラーなく動いていた箇所です。

やっていることとやりたいことは、

1.Form1にAxMSFlexGridLib.AxMSFlexGridを使用して利用者リストを表示
  -->ここは問題なし

2.Form1で選択した利用者の情報をForm2に表示
  Form2はモーダルモードで立ち上げる
  -->ここも問題なし
  --【Form1.vb】------------------
  <VB6>
  Form2.Show vbModal, Me

  <.NET>
  Me.AddOwnedForm(Form2)
  Form2.ShowInTaskbar = False
  Form2.Show()
  ------------------------------

3.Form2で変更した内容を、Form1のリストに反映する
  -->ここでエラー発生
  --【Form2.vb】------------------
  <VB6>
  With Form1.flx利用者一覧
    .TextMatrix(.Row, 1) = tb氏名
    .TextMatrix(.Row, 2) = tb氏名フリガナ.Text
    .TextMatrix(.Row, 3) = tb郵便番号.Text
    .TextMatrix(.Row, 4) = tb住所.Text
    .TextMatrix(.Row, 5) = tb電話番号.Text
  End With

  <.NET>
  Dim Form1 As New Form1
  With Form1.flx利用者一覧
    .set_TextMatrix(.Row, 1, tb氏名.Text)
    .set_TextMatrix(.Row, 2, tb氏名フリガナ.Text)
    .set_TextMatrix(.Row, 3, tb郵便番号.Text)
    .set_TextMatrix(.Row, 4, tb住所.Text)
    .set_TextMatrix(.Row, 5, tb電話番号.Text)
  End With
  ------------------------------

3の「set_TextMatrix(.Row, 1, tb氏名.Text)」の箇所でエラーが発生します。

エラー内容は、
  「381 HRESULTからの例外:0x800A017D(CTL_E_INVALIDPROPERTYARRAYINDEX)」
です。

.Rowで対象の列番号も正しく取得されていますし、tb氏名.Textなども文字列がセットされています。

.NETでの画面遷移方法を変更したことと何か関係があるのでしょうか。AddOwnedFormを使って子画面を呼び出した場合、set_TextMatrixが使えないという仕様なのでしょうか。

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

OS:Windows 2003 Server
言語:VB .NET 2005

AxMSFlexGridLib.AxMSFlexGridのset_TextMatrixエラーが発生します。

VB6からVB.NET2005への移行を行っています。
VB6ではエラーなく動いていた箇所です。

やっていることとやりたいことは、

1.Form1にAxMSFlexGridLib.AxMSFlexGridを使用して利用者リストを表示
  -->ここは問題なし

2.Form1で選択した利用者の情報をForm2に表示
  Form2はモーダルモードで立ち上げる
  -->ここも問題なし
  --【Form1.vb】------------------
...続きを読む

Aベストアンサー

当方の環境では減少が再現できません

ひとつ気になるのは『Dim From1 as new Form1』としてしまうと新たにメモリー上にForm1を作成してしまいますよ
やるなら
dim frm as Form1
frm = Ctype( Owner, From1)
With frm.flx利用者一覧
といった具合だろうと思います

エラーの内容からすると row,colの指示がおかしいといった意味のように思います


このカテゴリの人気Q&Aランキング

おすすめ情報