私はかなり単純な在庫追跡データベースを作成しています。そして、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
指定されたフィールドの値に追加されます。 amount
ID
MyID
ID
厄介なのは、値がに一致する行がテーブルにない可能性があることMyID
です。その場合は、行を追加する必要があります。
それが正しければ、存在しない場合INSERT
の行。次に、に一致する行を単純にMyID
入力できます。UPDATE
amount
MyID
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 に答える