• 締切済み

ADO Connection.Excuteで、INSERT出来ても、DELETE,UPDATE 出来ない

ADOを使った、プログラムを練習しています。  Dim mycon As ADODB.Connection Dim myre As ADODB.Recordset Set mycon = CreateObject("ADODB.Connection") Set myre = CreateObject("ADODB.Recordset") mycon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\sample7-10.mdb;" mycon.Execute "INSERT INTO 社員sample VALUES(308,'will', '営業','2007/1/1')" ※mycon.Excute "UPDATE 社員sample SET 部署名='営業' WHERE 部署名='営業'" ※mycon.Excute "DELETE FROM 社員sample WHERE 部署名='営業'" mycon.Close Set myco = Nothing ここで、INSERTは、うまくいくのですが、UPDATE,DELETE(※)が、 うまくいきません。 (コメントを使いながら、ひとつずつ、試しています)。 アクセスしているデータベースは、Accessのサンプルmdb、 ノースウィンドです。 何か、パスワードが働いているのでしょうか。 何かわかる人がいましたら、お願いします。

  • rheda
  • お礼率69% (257/372)

みんなの回答

  • ape5
  • ベストアンサー率57% (85/148)
回答No.1

言語の環境を教えてください。

rheda
質問者

お礼

回答ありがとうございます。 今回は、単純な、ミスでした。 (Execute→Excute)。 また、お願いします。

関連するQ&A

  • 【ADO】「Execute」を使うときは「Update」は不要?

    Sub test() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Desktop\test1.mdb" Set rs = New ADODB.Recordset rs.Open "テーブル1", cn, adOpenStatic, adLockPessimistic cn.Execute "DELETE FROM テーブル1" rs.Update '保存 Set rs = Nothing Set cn = Nothing End Sub を実行したとき テーブル1にデータがあるときはエラーにはならないのですが 何もデータがないときは「rs.Update」でエラーになります。 なので「Update」は消して実行していますが 「Update」がなくても「Execute」を実行した後は自動的に保存されるのでしょうか? よろしくお願いします。

  • ADO 「Set」は使ったほうがいいのでしょうか?

    Sub test1() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordse End Sub Sub test2() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset End Sub この二つは同じ意味ですか? 「Set」は使ったほうがいいのでしょうか? よろしくお願いします。

  • Access ADOについて質問です。

    Access ADOについて質問です。 以下コードでレコードセットを返す関数を使用しています。 動作的には問題ないのですが、標準モジュール内のレコードセットをClose及びNothingしていないのが気になります。 Private Sub Form_Open(Cancel As Integer) Dim rs2 As ADODB.Recordset Set rs2 = New ADODB.Recordset Set rs2 = CreateRecordSet("SELECT * FROM T_Standard;") Set Me.Recordset = rs2 rs2.Close: Set rs2 = Nothing end sub '標準モジュール Public Function CreateRecordSet(strSQL As String) As ADODB.Recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=O:\標準DB\StandardBackEnd.mdb" cn.Open Set rs = New ADODB.Recordset rs.Open strSQL, cn, adOpenStatic, adLockReadOnly Set CreateRecordSet = rs ' rs.Close: Set rs = Nothing   ←この部分 ' cn.Close: Set cn = Nothing   ←この部分 End Function 標準モジュール内ではCloseやNothingしなくてもメモリの開放は行われているのでしょうか? アドバイスよろしくお願いいたします。

  • Visual Basic SQL INSERT ADO

    VisualBasic6.0 を使用しています。 SQLのINSERT文についての質問なのですが、 フォームのテキストに記入された内容を新規のレコードとしてデータベースに登録する場合、どのようなプログラムを組めばよいのでしょうか? 下記のように組んでみたのですが、エラー(実行時エラー'-2147217904(80040e10)':一つ以上の必要なパラメータの値が設定されていません)がでてしまいます。 以下のプログラムでは、 Form4の.Text1~7にユーザーが記入した情報をデータベースのM_USERというテーブルの新レコードとして追加しようとしています。 Private Sub Command1_Click() Dim objcon As ADODB.Connection Dim objrec As ADODB.Recordset Dim strConnectString As String Dim strMDBFilePath As String Dim strSQL As String strMDBFilePath = "C:\Documents and Settings\Watanabe Ryota\デスクトップ\新ダイエット\diet.mdb" strConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDBFilePath & ";" Set objcon = New ADODB.Connection objcon.Open strConnectString strSQL = "INSERT INTO M_USER(U_ID,U_NAME,U_PASS,U_SIZES1,U_SIZES2,U_CAL,U_IKIGOMI) VALUES(Form4.Text1,Form4.Text2,Form4.Text3,Form4.Text4,Form4.Text5,Form4.Text6,Form4.Text7)" Set objrec = objcon.Execute(strSQL) End Sub おねがいします。

  • ADO1とADO2は意味は同じですか?

    Private Sub ADO1() Dim cn As New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName cn.Close: Set cn = Nothing End Sub Private Sub ADO2() Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName cn.Close: Set cn = Nothing End Sub は、 Dim cn As ADODB.Connection Set cn = New ADODB.Connection を簡素化したものが Dim cn As New ADODB.Connection になるのでしょうか?

  • NEWキーワードとCreateObjectは同じ?

    NEWキーワードとCreateObjectは同じことをするのでしょうか? Sub ADO_Sample1() Dim cn As New ADODB.Connection Set cn = CreateObject("ADODB.Connection") cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" & _ "D:\Mail.mdb;Jet OLEDB:Database;" Debug.Print "ファイルに接続できました。" cn.Close: Set cn = Nothing End Sub このようなコードの時、 Set cn = CreateObject("ADODB.Connection") は、あってもなくても問題ないようです。 NEWとCreateObjectがある場合は、 2度データベースに接続してしまうのでしょうか? NEWとCreateObjectがあってもエラーにならない理由を教えてください。

  • MDBをADO接続でINSERT・UPDATE・DELETE

    VB2005.NETの初級開発者です。 MDBをADO接続で開発を行いたいのですが 記述の方法がわかりませんので教えて下さい。 下記のようなサンプルはネット上でもよく見るのですが INSERT分で記述を行いたいのですが、サンプルが見つかりません よろしくお願いします。 後、CurrentProject.Connection.Execute strSQL, , adCmdTex このような記述をネット上で見るのですがstrSQLにInsert分を 記述すれば良いのですか、わからないので教えて下さい。 また、下記の記述の方がよいのですか? Dim ct As New Connection() Dim rt As New Recordset() ' 接続文字列を設定 ct.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\test.mdb" ' データベースに接続 ct.Open() ' テーブルを指定し、レコードセットをオープン With rt .CursorType = CursorTypeEnum.adOpenDynamic .LockType = LockTypeEnum.adLockOptimistic .Open("Insert_Tbl", ct, , , CommandTypeEnum.adCmdTable) End With ' データを追加 With rt .AddNew() .Fields("aaa").Value = TextBox1.Text .Fields("bbb").Value = TextBox2.Text .Update() End With

  • (ADO)DBのグリッド表示できない。

    同じような質問がありますが、わからなかったので再度質問させていただきます。 下記のホームページにありますように、AccessのDBをDataGridに表示したところ、フォームのDataGridには 何も表示しません。エラーも発生していない様子を見る とDBには接続していると思います。 http://homepage2.nifty.com/inform/vbdb/gridbyado.htm 下記が作成したもの ------------------------------------------------- Private Sub Form_Load() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset ' 接続する Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\test.mdb;" ' レコードセットを設定する Set rs = New ADODB.Recordset rs.Open "select * from test", cn, adOpenKeyset, adLockOptimistic ' グリッドのデータソースを指定する Set DataGrid1.DataSource = rs ' グリッドを更新する DataGrid1.Refresh End Sub ------------------------------------------------ フォームの設定やDBの設定またはほかの設定など必要なのでしょうか。 本のサンプルなどで調べましたが、わかりません。 わかる方いらっしゃいましたら教えていただけないでしょうか。 よろしくお願いいたします。 ----------- 環境 vb6 sp6

  • 削除、追加、更新処理に関して

    開発環境 Visual Basic 2008/ACCESS 2000 教えて下さい。 VBからACCESSを操作しようと思い、以下のような記述をしましたが、どうしても 以下のようなエラーとなってしまいます。 《記述内容》 'データベースファイル名 Dim sfina As String = "C:/sample.mdb" 'データベースパラメータ 'Dim strDatbasePara As String '参照設定をしない Dim myCon As Object, myRS As Object 'New キーワードを使用して新規ConnectionオブジェクトとRecordsetオブジェクトを生成 '**参照設定をしないのでCreateObject関数を使用する myCon = CreateObject("ADODB.Connection") myRS = CreateObject("ADODB.Recordset") '接続 myCon.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sfina) '接続先から「社員」テーブルの内容を読み込む myRS.Open("table1", myCon) Try 'テーブル全件削除(クリア) Do Until myRS.EOF myRS.Delete()    ※ ここでエラー myRS.MoveNext() Loop Catch ex As Exception Throw ex smsg = "失敗しました。" MessageBox.Show(smsg, "TEST", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End Try 'Recordsetオブジェクトへの接続を閉じ、オブジェクトを破棄 myRS.Close() : myRS = Nothing 'データベースへの接続を切断し、オブジェクトを破棄 myCon.Close() : myCon = Nothing 《エラー内容》  現在の Recordset は更新をサポートしていません。プロバイダーか、選択された  ロックタイプの限界の可能性があります。 なぜ参照設定を使用しないかという事に関しては、他のクライアントでバージョン違い があり、動作しないという現象があった為、このObject型を使って接続しようと 考えています。 この形でも削除、追加、更新ができるような記述の仕方を教えて下さい。 よろしくお願いします。

  • VBからAccessへの接続でエラー

    OS:Win2K SP4 SOFT:VB6 ACCESS2K Dim strDatabase As String Dim cn As Object Dim rs As Object Sub xx() Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") strDatabase = "C:\出荷配送システム\mftbc.mdb" cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & strDatabase ・       ・       ・ End Sub 上記ソースの「cn.OPEN」メソッドでエラーが発生します。 エラー内容は 'OPEN'メソッドは失敗しました。'_Connection'オブジェクト データベースに接続できません。 です。 何が原因なんでしょうか?? mdbのあるPath,File名は合っています。