1

私はかなり単純な在庫追跡データベースを作成しています。そして、IDでレコードを取得し、指定された数を金額に追加または削除したいと思います。存在しない場合は追加したいと思います。テーブルにバインドせずにこれを行うことさえ可能ですか?

4

2 に答える 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 に答える