2012-09-28 61 views
1

我正在製作一個相當簡單的庫存跟蹤數據庫。我想通過ID檢索記錄,並添加或刪除指定數量的金額。如果它不存在,我想添加它。甚至可以在不綁定表的情況下執行此操作?添加或更改訪問表中的記錄

+1

您可以使用記錄集,但爲什麼要避免綁定?在MS Access中使用綁定的表單非常簡單。 – Fionnuala

+0

你知道,這可能不是一個好主意。問題是......不,等等,那應該工作。 –

+0

好吧,就這樣說吧,我想如果可以的話就做。 –

回答

1

聽起來像是你有一個候選ID值的列表。也許它包含在名爲MyID的數字變量中。另外還有一個數字值MyAmtChange,它將被添加到ID字段值匹配MyID的行中表格中名爲amount的字段中的值。

併發症是您的表格中可能沒有行,其ID值與MyID匹配。在這種情況下,您需要爲其添加一行。

如果這是正確的,INSERTMyID當一個不存在。然後,您可以簡單地將UPDATEamount排在與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浮出水面的任何問題......或任何其他錯誤。

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

+0

如果我嘗試插入並且它已經存在,會發生什麼情況?更新它不存在的地方呢? –

+0

我更新了代碼,您可以根據需要處理儘可能多的錯誤。 –

相關問題