高校三年生の合唱祭で何を歌いましたか?

VB6.0 ACCESS2000で開発しています。
ACCESSのt_名前というテーブルを
DataGridへ表示しています。
グリッド上で選択した1件のレコードを削除したいのですが
どうすればいいのでしょうか。
お願いします。

A 回答 (2件)

Private Sub Command1_Click()


  Dim isOK  As Boolean
  Dim strSQL As String
  
  Me.MSFlexGrid1.Col = 1                      ' 列[ID] を指示
  strSQL = "DELETE FROM 仕入記録 WHERE ID=" & Me.MSFlexGrid1.Text ' SQL文作成
  isOK = CnnExecute(strSQL)                    ' SQL文実行
  If isOK Then
    Me.MSFlexGrid1.RemoveItem Me.MSFlexGrid1.Row
    MsgBox "1件のレコードを削除しました。"
  End If
End Sub

Microsoft は MSFlexGrid を推奨しているので、それを利用したサンプルを示します。
上記のコードでは首尾よく削除されたら表示行も削除しています。
なお、ここで使っている CnnExecute関数は、回答のために作成したもので十分にテストされたものではありません。

Option Explicit

Const conCNNSTRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\db1.mdb"

Public Function CnnExecute(ByVal strSQL As String) As Boolean
On Error GoTo Err_CnnExecute
   Dim isOK As Boolean
   Dim cnn As ADODB.Connection
  
   isOK = True
   Set cnn = New ADODB.Connection
   With cnn
     .Errors.Clear
     .ConnectionString = conCNNSTRING
     .Open
     .BeginTrans
     .Execute strSQL
     .CommitTrans
   End With
Exit_CnnExecute:
On Error Resume Next
   CnnExecute = isOK
   Exit Function
Err_CnnExecute:
   isOK = False
   If cnn.Errors.Count > 0 Then
     ErrMessage cnn.Errors(0), strSQL
     cnn.RollbackTrans
   Else
     MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _
        vbExclamation, " 関数エラーメッセージ"
   End If
   Resume Exit_CnnExecute
End Function

Public Sub ErrMessage(ByVal CnnErrors As ADODB.Error, ByVal strSQL As String)
   MsgBox "ADOエラーが発生しましたので処理をキャンセルします。" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & CnnErrors.Description & Chr$(13) & _
      "・Err.Number=" & CnnErrors.Number & Chr$(13) & _
      "・SQL State=" & CnnErrors.SQLState & Chr$(13) & _
      "・SQL Text=" & strSQL, _
      vbExclamation, " ADO関数エラーメッセージ"
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
うまく出来ました。

お礼日時:2007/06/02 09:44

VB6.0ですと、昔の記憶ですが、DataGridに表示するときにそれぞれの行のPKを保持してると思うのですが、それを使って、SQL文を発行してやったとおもいます。


基本はそれだと思います。
    • good
    • 0

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


おすすめ情報