PDA

View Full Version : جستجو با تكس باكس هاي خالي



pedram_ns
سه شنبه 24 آذر 1388, 08:46 صبح
با سلام من دو تا تكس باكس دارم كه عمل سرچ رو انجام مي دن مي خوام وقتي همه تكس باكس ها پر نشدن و مثلا فقط يكي شون توسط كاربر پر شده بازهم عمل سرچ انجام بشه راه زير به نظرم رسيد كه كار نميده و بازم بايد همه تكس باكس ها پر بشن لطفا كمك كنيد.

<asp:AccessDataSource ID="AccessDataSource1" runat="server"

DataFile="~/App_Data/Database.mdb"

SelectCommand="SELECT [ID], [City], [Name], [Admin], [Tel], [Fax] FROM [Company]">

<SelectParameters>

<asp:Parameter Name="City" DefaultValue="" Type="String" />

<asp:Parameter Name="name" DefaultValue="" Type="String" />

</SelectParameters>

</asp:AccessDataSource>



و در صفحه کد:



Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

AccessDataSource1.DataFile = "~/App_data/database.mdb"

AccessDataSource1.SelectCommand = "SELECT [ID], [City], [Name], [Admin], [Tel], [Fax] FROM [Company] where ((@city is null Or city=@city) and (@name is null Or name=@name))"

AccessDataSource1.SelectParameters("City").DefaultValue = city.Text

AccessDataSource1.SelectParameters("name").DefaultValue = name.Text

End Sub

raziee
سه شنبه 24 آذر 1388, 09:17 صبح
شرط استفاده شده در sql صحیح نیست.

where ((@city is null Or city=@city) and (@name is null Or name=@name))"

یه راه اینه که خود این شرط رو با چک کردن اون تکس باکس ها بنویسید.
یعنی اگر تکس باکس شهر خالی نبود شرط city=@city اضافه بشه.

pedram_ns
سه شنبه 24 آذر 1388, 11:23 صبح
اگه منظورتون به این صورت که بازم جواب نداد.با پر کردن هر دو تکس باکس اطلاعات می یاد.ولی اگه فقط یکی رو پر کنم چیزی نمیاد!بازم کمک کنید.

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim c, n As String
c = city.Text
n = name.Text

If c = "" Then
AccessDataSource1.DataFile = "~/app_data/database.mdb"
AccessDataSource1.SelectCommand = "SELECT * FROM [Company] WHERE ([Name] = ?)"
AccessDataSource1.SelectParameters("name").DefaultValue = name.Text
End If
If n = "" Then
AccessDataSource1.DataFile = "~/app_data/database.mdb"
AccessDataSource1.SelectCommand = "SELECT * FROM [Company] WHERE ([City] = ?)"
AccessDataSource1.SelectParameters("city").DefaultValue = city.Text


End If
If c <> "" And n <> "" Then
AccessDataSource1.DataFile = "~/app_data/database.mdb"
AccessDataSource1.SelectCommand = "SELECT * FROM [Company] WHERE (([City] = ?) AND ([Name] = ?))"
AccessDataSource1.SelectParameters("city").DefaultValue = city.Text
AccessDataSource1.SelectParameters("name").DefaultValue = name.Text
End If
End Sub

yekta64
سه شنبه 24 آذر 1388, 11:53 صبح
اگه منظورتون به این صورت که بازم جواب نداد.با پر کردن هر دو تکس باکس اطلاعات می یاد.ولی اگه فقط یکی رو پر کنم چیزی نمیاد!بازم کمک کنید.

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim c, n As String
c = city.Text
n = name.Text

If c = "" Then
AccessDataSource1.DataFile = "~/app_data/database.mdb"
AccessDataSource1.SelectCommand = "SELECT * FROM [Company] WHERE ([Name] = ?)"
AccessDataSource1.SelectParameters("name").DefaultValue = name.Text
End If
If n = "" Then
AccessDataSource1.DataFile = "~/app_data/database.mdb"
AccessDataSource1.SelectCommand = "SELECT * FROM [Company] WHERE ([City] = ?)"
AccessDataSource1.SelectParameters("city").DefaultValue = city.Text


End If
If c <> "" And n <> "" Then
AccessDataSource1.DataFile = "~/app_data/database.mdb"
AccessDataSource1.SelectCommand = "SELECT * FROM [Company] WHERE (([City] = ?) AND ([Name] = ?))"
AccessDataSource1.SelectParameters("city").DefaultValue = city.Text
AccessDataSource1.SelectParameters("name").DefaultValue = name.Text
End If
End Sub

سلام
اگه شما فقط دوتا تکس باکس دارید میتونید قبل از نوشتن کوری یه شرط بذارید که خالی بودن تک باکس ها رو چک کنه و در صورت خالی بودن یکی از اونا کوری رو با شرط همون تکس باکس صرچ می کنید در غیر این صورت کوری رو با نوشتن شرطی برابر هر دو تکس باکس سرچ می کنید
موفق باشید.

pedram_ns
سه شنبه 24 آذر 1388, 12:30 عصر
در واقع تكس باكسهام سه تان ولي براي سادگي دو تا گذاشتم.ميشه نمونه كد هاي من رو اصلاح كنيد تا درست متوجه بشم يا اگه نمونه اي داريد بفرستيد.ممنون مي شم.

yekta64
سه شنبه 24 آذر 1388, 13:00 عصر
در واقع تكس باكسهام سه تان ولي براي سادگي دو تا گذاشتم.ميشه نمونه كد هاي من رو اصلاح كنيد تا درست متوجه بشم يا اگه نمونه اي داريد بفرستيد.ممنون مي شم.



سلام
چشم حتما منتها شما کدی رو که می زارم امتحان کنید اگه جواب نداد راهحل قبل رو براتون توضیح می دم
شما کوری که توی کدتون نوشتین به صورت زیر تغییر بدید احتمال قوی مشکلتون حل میشه البته اگه حل نشد بگید تا راه حل قبل رو براتون توضیح بدم




"select [ID],[City],{Name],[Admin],[Tel],[Fax] FROM [Company] where City=@City or name=@name"

pedram_ns
سه شنبه 24 آذر 1388, 13:58 عصر
دوست گرامي ممنون از وقتي كه مي ذارين.
ولي اين كد شما وقتي جواب مي ده كه هر دو تكس باكس پر بشه ولي حداقل يكيش درست باشه ولي در مورد خالي بودن يكي از تكس باكسها كمكي نمي كنه من مي خوام كد رو طوري بنويسم كه اگه فقط يكي از تك باكس ها هم پر شد جستجو بر اساس اون انجام بشه اگه به اولين تاپيك كه ارسال كردم دقت كنيد سعي كردم اين كار رو بكنم ولي با مقدار null جواب نمي ده.
حالا هر راه حلي كه خودتون صلاح مي دونين رو بگين.
با سپاس فراوان

yekta64
چهارشنبه 25 آذر 1388, 08:14 صبح
دوست گرامي ممنون از وقتي كه مي ذارين.
ولي اين كد شما وقتي جواب مي ده كه هر دو تكس باكس پر بشه ولي حداقل يكيش درست باشه ولي در مورد خالي بودن يكي از تكس باكسها كمكي نمي كنه من مي خوام كد رو طوري بنويسم كه اگه فقط يكي از تك باكس ها هم پر شد جستجو بر اساس اون انجام بشه اگه به اولين تاپيك كه ارسال كردم دقت كنيد سعي كردم اين كار رو بكنم ولي با مقدار null جواب نمي ده.
حالا هر راه حلي كه خودتون صلاح مي دونين رو بگين.
با سپاس فراوان

سلام
بله من متوجه هستم منتها کوری که من براتون نوشتم رو دیروز امتحان کردم اگه یکی از تکس باکس ها خالی باشه باز جستجو رو انجام می ده و نتیجه ی صحیح رو برمی گردونه من چون امتحان کردم و جواب داد این کد رو براتون گذاشتم شما یه بار امتحان کنید امیدوارم درست بشه

pedram_ns
چهارشنبه 25 آذر 1388, 09:05 صبح
بله من امتحان كردم ولي حتما بايد هر دو پر باشه ولي اگه فقط يكي درست باشه سرچ انجام مي شه. كد هم همين رو مي گه من نمي دونم براي شما چطور جواب داده ولي براي من نمي ده! باز هم كمكي هست ممنون مي شم.

yekta64
چهارشنبه 25 آذر 1388, 09:24 صبح
بله من امتحان كردم ولي حتما بايد هر دو پر باشه ولي اگه فقط يكي درست باشه سرچ انجام مي شه. كد هم همين رو مي گه من نمي دونم براي شما چطور جواب داده ولي براي من نمي ده! باز هم كمكي هست ممنون مي شم.


خوب فکر می کنم شما به فیلدهای که توی جدول برای محتوای تکس باکس ها در نظر گرفتید اجازه ی null بودن ندادید این قضیه رو هم چک کنید

pedram_ns
چهارشنبه 25 آذر 1388, 15:58 عصر
بله. فيلد ها مي تونن مقدار خالي هم داشته باشن.
كد ها يك مشكلي با مقدار خالي دارن.كدهاي اول من رو ببينيد. به اين صورته:
where @city is null or city=@city
در اين حالت اگه تكس باكس city خالي باشه ديگه نبايد در بانك دنبالش بگرده.
اگه كد رو اين طوري بنويسم:
where @city='0' or city=@city
و هنگام جستجو در تكس باكس city مقدار 0 رو بنويسم با اين كد از city صرف نظر مي كنه و با name جستجو مي كنه كه از اين كد در droplist هايي كه مقدار همه موارد دارن استفاده مي شه.
ولي براي مقدار خالي در كد اولم جواب نمي ده در واقع يك مشكلي در فهميدن مقدار null داره.
كمكتون رو دريغ نكنيد.