2015-03-12 5 views
0

У меня есть запрос с CustID с mutiple Business, связанным с CustID. Я не могу использовать Dlookup, потому что он возвращает только одну переменную. Я хочу показать на форме, которая для этого custID, вот все компании, с которыми она связана. Я хочу, чтобы компании появлялись в поле (бизнес) в другой таблице формы.RecordSet и Ms Access 2007

Я начал этим

Public Sub OpenRecordset() 


Dim db As Database 
Dim rs As Recordset 

Set db = CurrentDb 
Set rs = db.OpenRecordset("Q:businesses") 
Do While Not rs.EOF 
T:Custinfo!business = NAME (I am lost in between on how to identify the custid and place the businesses into the table field as a Dlookup) 

rs.movenext 
Loop 
rs.Close 
Set rs = Nothing 
db.Close 


End Sub 

я продолжаю смотреть на другие примеры, но не могу показаться, чтобы связать вместе, где замена DLookup будет происходить и как вы должны поставить это на форме в виде техническая спецификация?

ответ

0

Вам не нужен DLookup. Вы можете сделать одну из двух вещей:

1) Используйте ListBox и установите RecordSource равную ваш запрос (при условии, Q: предприятия были надлежащим образом определены, чтобы дать предприятия в результате)

2) Тем не менее, нужно ваш запрос будет необходимо, но вы можете создать строку со всеми предприятиями в нем:

Public Sub OpenRecordset() 


Dim db As Database 
Dim rs As Recordset 
Dim StrBusinesses As String 

Set db = CurrentDb 
Set rs = db.OpenRecordset("qryBusinesses") 
If rs.EOF and rs.BOF Then 
    MsgBox("No businesses exist for this Customer") 
    Exit Sub 'Or do whatever else you want if there are no matches 
Else 
    rs.MoveFirst 
End If 
StrBusinesses = "" 
Do While Not rs.EOF 
    StrBusinesses = StrBusinesses & rs!Business & ", " 
    rs.movenext 
Loop 

rs.Close 
StrBusinesses = Left(StrBusinesses, Len(StrBusinesses) - 2) 
Forms!MyForm.MyField = StrBusinesses 'Set the field equal to the string here 
Set rs = Nothing 
db.Close 


End Sub 

конечно, это предполагает, что запрос «Q: Бизнес» определяется, чтобы получить нужную информацию, такие как:

SELECT custID, business FROM tblBusinesses WHERE custID = X 

где «X» - это custID, который вы ищете.

Если вам нужно задать запрос динамически, вам нужно будет установить querydef.

EDIT, чтобы включить код запроса. *********************** Также изменил имя запроса на «qryBusinesses» в коде выше и ниже поскольку я не уверен, что вы можете сделать запрос с двоеточием в нем.

Чтобы установить QueryDef, поставить это в начале кода:

Dim qdf As QueryDef 
Set qdf = CurrentDb.QueryDefs("qryBusinesses") 
qdf.SQL = "SELECT custID, business FROM tblBusinesses" _ 
     & " WHERE custID = " & Forms!MyForm.CustID 'replace with actual form and field 

Это предполагает, что I) qryBusinesses уже существует, II) CustID является поле номера

EDIT *** *********** Если вы определяете запрос для просмотра самой формы, вам не нужно будет устанавливать sql, поэтому, если запрос был определен (либо в VBA, либо через мастер запросов), как : qdf.sql = "SELECT custID, business FROM tblBusinesses" _ & «WHERE custID = Forms! MyForm.CustID»

тогда вам не нужно было переопределять sql. Тем не менее, немного более динамично поставить custID в qdf, так как легче отлаживать любые проблемы, так как вы можете увидеть точный sql, который выполняется в исходном методе.

+0

Благодарим вас, если вы поместите эти поля в форму, можете ли вы втянуть их в отчет? Кроме того, можем ли мы добавить в запрос, что Where CustID = [«Имя формы»]? – epv

+0

Вы можете поместить это в запрос до тех пор, пока выполняете запрос динамически. Я добавлю изменение, чтобы показать, как это сделать. – OpiesDad

+0

Спасибо, OpiesDad, после того, как я положил это в модуль, как мне получить это, чтобы показать в форме? Я просто создаю текстовое поле и привязываю его к событию с помощью Click? – epv