2013-05-29 1 views
0

У меня есть следующий простой и легкий код:поиска несколько критериев, если потом еще на Access 2010 несвязанной форме с использованием VBA

Private Sub Add_Click() 
Dim db As Database, rsAtype As Recordset, Criteria As String 

    Set db = CurrentDb 
    Set rsAtype = db.OpenRecordset("Asset_Types", DB_OPEN_DYNASET) 

Criteria = "Type='" & NOA & "'" 

rsAtype.FindFirst Criteria 

'**** Following code is Adding a new type of asset to the Asset_Types Table**** 
If rsAtype.NoMatch Then 

     rsAtype.AddNew 
     rsAtype("Type") = Me!NOA 
     rsAtype("Description") = Me!Desc 
     rsAtype.Update 
MsgBox "New Asset Added" 
    rsAtype.Close 
    db.Close 
    DoCmd.Close 
Else 
     MsgBox "Asset Type " & Me!NOA & " already exists.", 48, "ERROR!" 
     Me!NOA.SetFocus 

End If 

End Sub 

Здесь я ищу, если тип объекта уже существует, то дать предупреждение вместо обновления, есть любым способом я мог бы искать несколько столбцов в таблице, используя только один оператор If, я не хочу создавать вложенные операторы If.

ответ

0

Да, просто объедините несколько критериев. Например:

strCriteria = "[PlantID]=" & Me!PlantID & " AND [Location]= '" & Me!Location & "'" 

Здесь первый параметр PlantID предназначен, чтобы быть целым числом, а второй, Location, строку (отсюда и одиночные кавычки).

+0

Привет Митч, я получил ошибку несоответствия типов в следующем коде: Criteria = "Имя поставщика = '"! & Me Supnamebox & "'" И "contact_name = '"! & Me ContPerbox & "'" И " Contact_number = '"& Me! Me! Phonebox &"' "And" Contact_email = '"& Me! Emailbox &"' " – user1687929

+0

Все поля, упомянутые выше, являются Text. – user1687929

+0

Попробуйте использовать двойные кавычки (как в цитате double (x2)) вместо одиночного? Прошло некоторое время с тех пор, как я написал код ADO. –

0

Ну я нашел ответ, и должен был быть частью цитаты:

СТАРЫЙ КОД

Criteria = "Supplier_name='" & Me!Supnamebox & "'" And "Contact_name='" & Me!ContPerbox & "'" And "Contact_number='" & Me!Me!Phonebox & "'" And "Contact_email='" & Me!emailbox & "'" 

НОВЫЙ КОД

Criteria = "Supplier_name='" & Me!Supnamebox & "' AND Contact_name='" & Me!ContPerbox & "' AND Contact_number='" & Me!Phonebox & "' AND Contact_email='" & Me!emailbox & "'" 

я испытал его, и он работает, слово подсказки, хотя, синтаксис прав, но логика, которую я использовал, неверна, я должен использовать OR вместо AND. OR проверяет, есть ли какое-либо поле, которое соответствует, и будет выдавать ошибку только в том случае, если все поля совпадают, в противном случае это позволит вам добавить повторяющуюся запись.

Смежные вопросы