我一直在嘗試使用一個窗體來更新某些記錄,這個窗體中有一些組合框,並且這些窗體是由包含城市和部門的輔助表填充的(需要更新的表只包含兩側的ID「side 「表ADO SQL修改其他表上的數據?
,因爲我是有一些困難的時候,直接插入數據,我決定使用ADO直接SQL插入
到目前爲止,我的VBA代碼如下所示:
Private Sub btnClose_Click()
Dim Msg, Style, Title, Ctxt, Help, Response, MyString
Msg = "Want to save changes?"
Style = vbYesNo + vbQuestion
Tytle = "Confirm changes"
Ctxt = 1000
Response = MsgBox(Msg, Style, Tytle, Help, Ctxt)
If Response = vbNo Then
Cancel = True
Else
Call ManualUpdate
End If
End Sub
而且ManualUpdate子文件:
Private Sub ManualUpdate()
Dim ccnDb As ADODB.Connection
Set ccnDb = CurrentProject.Connection
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
Dim strSQL As String
strSQL = "UPDATE personal SET personaApPaterno = " & "'" & Trim(Me.personaApPaterno.Value) & "'"
strSQL = strSQL & ", personaApMaterno = " & "'" & Trim(Me.personaApMaterno.Value) & "'"
strSQL = strSQL & ", personaNombre = " & "'" & Trim(Me.personaNombre.Value) & "'"
strSQL = strSQL & ", personaCargo = " & "'" & Trim(Me.personaCargo.Value) & "'"
strSQL = strSQL & ", departamentoId = " & Me.cmbDepto.Value
strSQL = strSQL & ", ciudadId = " & Me.cmbCiudad.Value
strSQL = strSQL & ", personaProfesion = " & "'" & Trim(Me.personaProfesion.Value) & "'"
strSQL = strSQL & ", personaGerente = " & Me.personaGerente.Value
strSQL = strSQL & ", personaExterno = " & Me.personaExterno.Value
strSQL = strSQL & ", personaSexo = " & Me.ogSexo.Value
strSQL = strSQL & " WHERE personaRUT = " & Me.personaRUT.Value
If Me.Dirty Then
Me.Dirty = False
End If
With cmd
.CommandText = strSQL
.ActiveConnection = ccnDb
.Execute
End With
Set cmd = Nothing
DoCmd.Close
End Sub
到目前爲止...所以...好
正如你可以看到SQL的功能直接升級到所謂的「個人」表,工作正常,唯一的事情,是推動我瘋狂的是,出於某種奇怪的原因,Access 2007正在更新輔助表格,並用他們各自的ID代替「ciudadName」和「departamentoName」字段中的文本。只是爲了一些額外的信息,我在ADO之前使用了DAO。
下面是DAO代碼也...
Private Sub ManualUpdate()
Dim dbDao As DAO.Database
Dim rsDao As DAO.Recordset
If Me.Dirty Then
Me.Dirty = False
End If
Set dbDao = CurrentDb
Set rsDao = dbDao.OpenRecordset("personal", dbOpenTable)
rsDao.FindFirst ("personaRUT = " & Me.personaRUT.Value)
rsDao.Edit
rsDao![personaApPaterno] = Trim(Me.personaApPaterno.Value)
rsDao![personaApMaterno] = Trim(Me.personaApMaterno.Value)
rsDao![personaNombre] = Trim(Me.personaNombre.Value)
rsDao![personaCargo] = Me.personaCargo.Value
rsDao![departamentoId] = Me.cmbDepto.Value
rsDao![comunaId] = Me.cmbComuna.Value
rsDao![personaProfesion] = Me.personaProfesion.Value
rsDao![personaGerente] = Me.personaGerente.Value
rsDao![personaExterno] = Me.personaExterno.Value
rsDao![personaSexo] = Me.ogSexo.Value
rsDao.Update
rsDao.Close
dbDao.Close
Set dbDao = Nothing
Set rsDao = Nothing
DoCmd.Close
End Sub
BTW:DAO是幹什麼的地方不應該被髮生的事情,這是爲什麼我去的ADO方式,但具有相同的「更新」沒有運氣。
編輯:
決定要補充一點,我認爲是爲了得到我的問題,正確的幫助相關的一些額外信息。這個想法是展示不同的表格是如何相互關聯的。
如果需要的話我也可以上傳的形式,它自身的捕獲。
也許你的關係配置不正確......只是猜測。 –
另一種可能性是組合框以這種方式綁定到您的「方」(我稱它們爲查找)表,以便選擇組合框更新查找表。 –
這聽起來像檢查什麼......任何方式,因爲我知道我應該有一個預先構建的查詢(視圖)中的查找,並對查找ID的做一個SELECT DISTINCT? – AcidRod75