VB.Netを始めて一ヶ月。
DB接続は出来たもののREADのみで、更新処理が全く出来ません。
何が悪いのか、どうすればいいのかもわからず途方に暮れています。
どなたかお知恵をお貸し下さい。
下記にプログラムを記載します。
■◇■ 共通定数 ■◇■
Public gstrSysd As String = "DSN=DbName;UID=UserId;PWD=Password"
一部名称を変更しています。
■◇■ Readプログラム ■◇■
Public Sub psubDBReadK(ByVal strSql As String, Optional ByVal intDcnt As Integer = 0)
Dim godbSysd As New OdbcConnection(gstrSysd)
godbSysd.Open()
Dim odbCom As New OdbcCommand(strSql, godbSysd)
Dim odbRead As OdbcDataReader = odbCom.ExecuteReader(CommandBehavior.CloseConnection)
Dim intLcnt As Integer
Erase gtblDb
glngDcnt = 0
While odbRead.Read()
glngDcnt = glngDcnt + 1
ReDim Preserve gtblDb(intDcnt, glngDcnt)
For intLcnt = 1 To intDcnt
If IsDBNull(odbRead.GetValue(intLcnt - 1)) Then
gtblDb(intLcnt, glngDcnt) = ""
Else
gtblDb(intLcnt, glngDcnt) = Trim(odbRead.GetString(intLcnt - 1))
End If
Next intLcnt
End While
odbRead.Close()
godbSysd.Close()
End Sub
上記モジュールをSQL文を作成してCallします。
strSql = ""
strSql = strSql & "SELECT Mm, Wd, Dd, Nm "
strSql = strSql & " FROM TableName "
strSql = strSql & "WHERE Fd <= '" & lngYear & "' "
strSql = strSql & " AND Ed >= '" & lngYear & "' "
strSql = strSql & "ORDER BY Mm, Wd, Dd "
Call psubDBReadK(strSql, 4)
ここまでは動作確認も出来ましたが、問題はWRITE処理です。
■◇■ WRITEプログラム ■◇■
Public Sub psubDbWriteK(ByVal strSql As String)
Dim odbSysd As New OdbcConnection(gstrSysd)
odbSysd.Open()
Dim odbCom As New OdbcCommand(strSql, odbSysd)
odbCom.Connection.Open()
odbCom.ExecuteNonQuery()
odbSysd.Close()
End Sub
上記コードだとコネクションのオープン時に『既に開かれています』のエラーとなりました。
同コードを削除するとエグゼキュートノンクエリーにて『システムエラー』となり、やはり上手く動作していないようです。
同様にOdbcDataAdapterを使う方法も試してみましたが上手くいきませんでした。
DBアクセスの方法はいくつかあると思いますが、SELECT句と同様の方法でINSERT、UPDATEも行いたいのですが、どうすれば良いのでしょうか?
環境
OS WIN2K
VS.Net Professional(VB)
DB SqlServer2K
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Public Sub psubDbWriteK(ByVal strSql As String)
Dim odbSysd As New OdbcConnection(gstrSysd)
odbSysd.Open() →ここでコネクションオープン
Dim odbCom As New OdbcCommand(strSql, odbSysd) ←ここで↑のコネクションセット
odbCom.Connection.Open() ←ここでまたコネクションオープンしようとしている
odbCom.ExecuteNonQuery()
odbSysd.Close()
End Sub
なので2度目のコネクションオープンを削除すればいいと思いますよ。
この回答への補足
前述にありますように、コネクションオープンを削除するとシステムエラーが発生します。
はっ!
もしやただのSQLエラーなのでしょうか><
チョット調べてみます。(-_-;)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
COBOLのCALL文がいまいちつかめ...
-
GDLでH8/3052Fのi2cプログラム...
-
65536は2の何乗なのでしょうか?
-
正しい五十音順について
-
C言語の課題で、1年の秒数を計...
-
Notepad++の関数リスト表示でC...
-
Excelに埋め込んだVBAのプログ...
-
UWSCで指定のフォルダを開きたい。
-
グループを均等に分けるには?...
-
シャープのポケコンについて
-
めんどくさがり屋はプログラマ...
-
読み込み中にアクセス違反が発...
-
排他的論理和 BCC(水平パリテ...
-
画像処理
-
ドロップダウンリストの文字を...
-
EXCELなどで「返す」という表現
-
科学技術計算の仕事について
-
conio.h? curses.h?
-
[急募]Pythonについてです。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
C言語(gcc), Linux, FTPプログ...
-
空elseの有無
-
COBOLのCALL文がいまいちつかめ...
-
プログラミングのコード量に関...
-
VBからシャットダウンさせる方法
-
他人が作ったプログラムのメン...
-
プログラム動作時のCPU処理時間...
-
C++ソースからUMLの設計書を作...
-
変数・オブジェクト名に漢字使用
-
きれいなコード vba vbaを勉強...
-
ソースコード改造 msペイント
-
CからJavaの呼び出し
-
プログラミングの読み方、書き...
-
「ルーチン」という言葉の意味
-
MFC,C++/CLI,C#の共存
-
BIOSってどんなCPUで処理してる...
-
ActiveXコントロールの作成(V...
-
Visual Basic で C++ を使いたい!
-
テキストの折り返し処理について
おすすめ情報