View Full Version : جستجو ناقص
  
dddd10
چهارشنبه 21 اردیبهشت 1390, 21:17 عصر
سلام
با استفاده از چند تکست باکس جستجو رو محدود به هر بخشش کردم. بعضی از تکست باکسام جستجوش انجام میگیره بعضیا نه!! کدی که استفاده کردم اینه :
If Text3.Text <> "" Then
  Adodc1.Recordset.Filter = "tarikh like '%" & Text3.Text & "%'"
Else
  Adodc1.Recordset.Filter = "tarikh <>''"
End If
اولیه انجام نمیگیره اما این انجام میگیره :
If Text1.Text <> "" Then
  Adodc1.Recordset.Filter = "code like '%" & Text1.Text & "%'"
Else
  Adodc1.Recordset.Filter = "code <>''"
End If
vbhamed
پنج شنبه 22 اردیبهشت 1390, 01:25 صبح
سلام
نوع فيلد كد و تاريخ چيه ؟
احتمالا كدتون رشته اي و تاريخ عددي است
ضمنا داخل text1 و text3 چي مي نويسيد كه جستجو بشه ؟
داخل بانك دقيقا چي ثبت شده ؟
dddd10
پنج شنبه 22 اردیبهشت 1390, 10:08 صبح
مقدار فیلد code از نوع استرینگ هست. و فیلد تاریخ نوع date/time گذاشتم
یک فیلد دیگه هم دارم به نام text که بعضی از textbox ها هم اونو جستجو نمیکنند!
در بانک مال فیلد تاریخ 1390/02/17 ثبت کردم و چندتا تاریخ دیگه
dddd10
پنج شنبه 22 اردیبهشت 1390, 10:09 صبح
راستی وقتی ارور هم میده تو دیباگ میگه این خط مشکل داره!!
Adodc1.Recordset.Filter = "tarikh like '%" & Text3.Text & "%'"
returnx
پنج شنبه 22 اردیبهشت 1390, 10:48 صبح
شما تاریخ رو به شمسی در Db ذخیره می کنید؟
اگه جواب بله هست ، می تونه بخاطر این باشه ، که من بجای اینکه تابع رو به میلادی تبدیل کنید و ذخیره کنید راه دیگه ای رو به شما پیشنهاد میکنم اونم اینه که تاریخ رو تبدیل به عدد کنید و ذخیره کنید ، مثلا 2/3/1390
میشه : 139032 اینجوری دیگه به فیلد Date &Time دیگه نیازی نیست و مشکلات مربوط به تاریخ شمسی حل خواهد شد...
من برای اینکار این تابع رو نوشتم:
Public Function date_to_num(idate As Date) As Double
    Dim my_date As String
    Dim counter As Integer
    Dim token As String * 1
    Dim str_date As String
    my_date = idate
    my_date = my_date & "$"
    While token <> "$"
        counter = counter + 1
        token = Mid(my_date, counter, 1)
        If token <> "/" And token <> "$" Then
            str_date = str_date & token
        End If
    Wend
   date_to_num = Int(str_date)
End Function
و بر عکس این عمل:
Public Function num_to_date(num As Double) As Date
    Dim year As String
    Dim mounth As String
    Dim day As String
    Dim i_date As String
    Dim c_date As String
    i_date = Str(num)
    year = Left(i_date, 5)
    mounth = Mid(i_date, 6, 2)
    day = Right(i_date, 2)
    c_date = year & "/" & mounth & "/" & day
    num_to_date = c_date
 
End Function
موفق باشید...
dddd10
پنج شنبه 22 اردیبهشت 1390, 14:37 عصر
مرسی ولی مشکل من همون تاریخ خالی نیست! چندتا فیلدهای دیگه مثل محل سکونت که از نوع text است همین مشکلو دارند
اگر میدونید برنامه رو بزارم بهتر میشه راهنمایی کرد بگید.
vbhamed
جمعه 23 اردیبهشت 1390, 06:40 صبح
سلام
خب فيلد تاريخ از نوع رشته اي نيست پس نبايد براش از علامت ' استفاده كرد
براي اين كار بايد يا طبق گفته دوستمون فيلد تاريخ رو به صورت عدد ذحيره كنيد و بعد مثل عدد باهاش رفتار كنيد، البته اين بهتر هم هست چون اونطوري هنگام ذخيره تاريخ شمسي در فيلد DATETIME ممكنه به مشكل بر بخورين
يه راه ديگه هم اينه كه با استفاده از يك كوئري اطلاعاتتون رو بخونيد و در اون تاريخ رو به رشته تبديل كنيد و بعد مثل يك رشته با همون دستور بالا جستجو ميشه
    Ado.CommandType = adCmdText
    Ado.RecordSource = "Select *, cstr(tarikh) as dat from tbl_tel"
    Ado.Recordset.Filter = "dat like '%" & Text1 & "%'"
در دستور بالا فيلد Dat از روي تاريخ ساخته شده اما به صورت رشته اي
اگر خواستيد خود فيلد Tarikh ديگه در خروجي نياد به جاي * اسم تك تك فيلد ها رو بنويسيد و با ويرگول از هم جدا كنيد
در مورد بقيه فيلدهاي مشكل دار هم بهتره نمونه كد نوشته شده و اطلاعات ثبت شده در بانك رو بزاريد، البته بهتره كلا اون قسمت پروژه رو بزاريد تا بررسي بشه
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.