PDA

View Full Version : جستجو در ado



vbiman
سه شنبه 18 بهمن 1384, 21:08 عصر
با عرض سلام

من برنامه ای نوشته ام که با استفاده از ado عملیات جستجو صورت بگیرد، ولی زمانی که برنامه را اجرا میکنم به خط روبرو اشکال میگرد و کلمه FIND را مشخص می کند.
x = ado.Recordset.Find(s, , adSearchForward, 1 )
خطای کامپایلر==>“ Expected function or variable”

با تشکر...

sohrab o
پنج شنبه 20 بهمن 1384, 11:48 صبح
اگه سورست مهم نیست اینجا بذار تا برات کاملش کنم

vbiman
پنج شنبه 20 بهمن 1384, 23:05 عصر
این هم سورس برنامه ام که گفته بودید و اگر مشکل مرا حل کنید ممنون می شوم.
با تشکر...


Public i As Byte, c As Integer

Private Sub cmd_Click(Index As Integer)
Select Case Index
Case 0 'update new user
ado.Recordset.Update
For i = 0 To 5
txt(i).Text = ""
Next
txt(0).SetFocus
Case 1 'NEW BOOK
If cmd(1).Caption = "new book" Then
ad.Recordset.AddNew
txt(14).SetFocus
Randomize
c = (Rnd(1) * 999)
txt(13).Text = c
cmd(1).Caption = "save"
Else
ad.Recordset.Update
For i = 13 To 16
txt(i).Text = ""
Next
txt(14).SetFocus
cmd(1).Caption = "new book"
End If
Case 2 'DEL USER
If Len(txt(17)) > 0 Then
Dim s As String, x As String
s = txt(17).Text
x = ado.Recordset.Find(s, , adSearchForward, 1)
If ado.Recordset.EOF = True Then
MsgBox ("not found")
Else
MsgBox ("find record")
End If
End If
End Select

End Sub
Private Sub cmd3_Click()
a = MsgBox("are you sure?", vbYesNo + vbQuestion, "EXIT")
If a = vbYes Then End
End Sub
Private Sub Form_Activate()
frm.Left = (Screen.Width - frm.Width) / 2
frm.Top = (Screen.Height - frm.Height) / 2
ado.Recordset.AddNew
Randomize
c = (Rnd(1) * 999)
txt(3).Text = c
End Sub

Negin_Gostaran
دوشنبه 24 بهمن 1384, 04:52 صبح
دوست عزیز سلام
شما در متد Find برای اولین پارامتر باید شرط جستجو را مشخص کنید، که در شرط باید همیشه نام فیلد مورد جستجو در نظر گرفته شود.
شما محتوای تکس باکس را در رشته S قرار داده اید و باید ارتباط آن با فیلد هم مشخص شود، مثلا اگر در فیلد Name می خواهید جستجو کنید
S = "Name = " & S
اگر فیلد شما از نوع String می باشد باید مقدار مورد جستجو داخل دو کاراکتر ' قرار داده شود.
در ضمن فکر می کنم این متد دارای مقدار بازگشتی نباشد و در صورت پیدا کردن رکورد مورد نظر کرسر به آن رکورد منتقل می شود و در غیر اینصورت به انتهای رکوردست منتقل می شود و با چک کردن مقدار Eof آن را متوجه می شویم.
موفق باشی