Выполнение запроса выбора в MS Access 2007 VBA и присвоить полученное значение для текстового поля - PullRequest
1 голос
/ 22 февраля 2012

Мне нужно выполнить SQL-запрос, и полученное значение присваивается текстовому полю в форме. Я использую docmd.runsql sql для выполнения этого запроса.

Private Sub Form_Current()
Dim SQL As String
Dim db As Database
Dim rs As DAO.Recordset

If IsNull(Me.txtInstalledQuantity) Then
SQL = "select count(tblequipmentbase.id)AS CountInstalledQuantity FROM (tblequipmentbase INNER JOIN     tblequipmentparts ON tblequipmentbase.id=tblequipmentparts.idconnect) INNER JOIN tblparts ON tblequipmentparts.idpart=tblparts.id where tblparts.id= " & txtQueryID.Value & ";"
Set db = CurrentDb
Set rs = db.OpenRecordset(SQL)
DoCmd.RunSQL SQL
Me.txtInstalledQuantity = rs!CountInstalledQuantity
Set rs = Nothing
Set db = Nothing
End If
End Sub

Ошибка в команде runql.

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Попробуйте это:

Set db = CurrentDb
Set rs = db.OpenRecordset(SQL)
Me.txtInstalledQuantity = rs.Fields("CountInstalledQuantity").Value
0 голосов
/ 22 февраля 2012

Предлагаю создать запрос, назовем его Оборудование:

 SELECT eb.id 
 FROM (tblequipmentbase eb
 INNER JOIN tblequipmentparts ep
 ON eb.id=ep.idconnect) 
 INNER JOIN tblparts p
 ON ep.idpart=p.id 

Затем вы можете использовать этот запрос несколькими способами, например, вы можете установить источник управления текстовым полем:

= DCount("eb.id","Equipment","p.ID=" & txtQueryID)

Подробнее: http://msdn.microsoft.com/en-us/library/aa168244(v=office.10).aspx

Me.txtInstalledQuantity = DCount("eb.id","Equipment","p.ID=" & txtQueryID)

Или

Dim rs As DAO.Recordset

s = "SELECT Count(eb.id) As EqC " _
  & "FROM (tblequipmentbase eb " _
  & "INNER JOIN tblequipmentparts ep " _
  & "ON eb.id=ep.idconnect)  " _
  & "INNER JOIN tblparts p " _
  & "ON ep.idpart=p.id " _
  & "WHERE p.id = " & Me.txtQueryID

Set rs = CurrentDB.OpenRecordset(s)

Me.txtInstalledQuantity = rs!EqC
...