私はかなり単純な在庫追跡データベースを作成しています。そして、IDでレコードを取得し、指定された数を金額に追加または削除したいと思います。存在しない場合は追加したいと思います。テーブルにバインドせずにこれを行うことさえ可能ですか?
18210 次
2 に答える
1
正確に何が必要かわかりませんが、このコードはVB-Accessを使用してデータを操作する方法を示しています。
Sub fnStudent()
On Error GoTo insertError
Dim studentQuery As String
'INSERTING INTO TABLE
studentQuery = "INSERT INTO Students values ('10','YAHYA','02/10/2012')"
CurrentDb.Execute studentQuery, dbFailOnError
'UPDATING
studentQuery = "UPDATE Students Set name='YAHYA OULD ABBA' WHERE stdID='10'"
CurrentDb.Execute studentQuery, dbFailOnError
'LISTING VALUES
Dim studentsRS As Recordset
Set studentsRS = CurrentDb.OpenRecordset("SELECT * FROM Students WHERE upper(name) like '%YAHYA%';")
Do While Not studentsRS.EOF
MsgBox "ID : " & studentsRS.Fields(0) & "Name : " & studentsRS.Fields(1) & "Birth Date : " & studentsRS.Fields(2)
studentsRS.MoveNext
Loop
'DELETING
studentQuery = "DELETE FROM Students WHERE stdID='10'"
CurrentDb.Execute studentQuery, dbFailOnError
Exit Sub 'exit if there was no error
'UPDATE:
errorHandler:
If Err.Number = 3022 Then
MsgBox "Can't have duplicate key; index changes were unsuccessful", vbMsgBoxRtlReading + vbCritical, "Error " & Err.Number
Else : MsgBox "Error" & vbCrLf & Err.Description, vbMsgBoxRtlReading + vbCritical, "Error " & Err.Number
End If
End Sub
vbaここにエラーのリストがありますhttp://www.halfile.com/vb.html
于 2012-10-02T12:28:57.680 に答える
1
候補者のID価値があるようですね。多分それはという名前の数値変数に含まれていますMyID。また、別の数値、があります。これは、フィールド値が一致する行のテーブルでMyAmtChange指定されたフィールドの値に追加されます。 amountIDMyID
ID厄介なのは、値がに一致する行がテーブルにない可能性があることMyIDです。その場合は、行を追加する必要があります。
それが正しければ、存在しない場合INSERTの行。次に、に一致する行を単純にMyID入力できます。UPDATEamountMyID
Dim strInsert As String
Dim strUpdate As String
Dim db As DAO.Database
Set db = CurrentDb
If DCount("*", "YourTableNameHere", "ID = " & MyID) = 0 Then
strInsert = "INSERT INTO YourTableNameHere (ID)" & vbCrLf & _
"VALUES (" & MyID & ");"
Debug.Print strInsert
db.Execute strInsert, dbFailOnError
End If
strUpdate = "UPDATE YourTableNameHere" & vbCrLf & _
"SET amount = Nz(amount, 0) + " & MyAmtChange & vbCrLf & _
"WHERE ID = " & MyID & ";"
Debug.Print strUpdate
db.Execute strUpdate, dbFailOnError
Set db = Nothing
この推測がかなり近い場合は、そのコードにエラーハンドラブロックを追加して、dbFailOnError...またはその他のエラーによって表面化された問題に対処します。
于 2012-10-07T19:38:38.760 に答える