behövs förtydligande eller tillsnyggande av koden jag lagt upp så fixar jag det!
hej! jag bygger en sql select där jag sorterar resultaten med hjälp av tecken som skrivs in i sex olika textboxar. jag använder substring metoden i sql för att jämföra om en siffra på en viss position i fältet är samma som den man skrivit in. jag har fått sökningen på första och sista tecknet att fungera, både då man bara söker på antingen första eller sista och då man söker på båda samtidigt. problemet är att jag inte får till sökningen på de fyra tecken som ligger mellan första och sista.
jag kodar i asp.net och c#, och databasen är mssql.
så här ser koden ut som skapar villkor för select-satsen:
int numberofconditions = 0;
string condition = " WHERE";
string and = "";
if (searchtbox1.Text != "")
{ if (numberofconditions > 0) { and = " AND "; } condition += and + " substring(offerdata.objectreference, (len(offerdata.objectreference) - 5),(len(offerdata.objectreference) - 5)) =" + searchtbox1.Text; numberofconditions++; }
if (searchtbox2.Text != "")
{ if (numberofconditions > 0) { and = " AND "; } condition += and + " substring(offerdata.objectreference, (len(offerdata.objectreference) - 4),(len(offerdata.objectreference) - 4)) =" + searchtbox2.Text; numberofconditions++; }
if (searchtbox3.Text != "")
{ if (numberofconditions > 0) { and = " AND "; } condition += and + " substring(offerdata.objectreference, (len(offerdata.objectreference) - 3),(len(offerdata.objectreference) - 3)) =" + searchtbox3.Text; numberofconditions++; }
if (searchtbox4.Text != "")
{ if (numberofconditions > 0) { and = " AND "; } condition += and + " substring(offerdata.objectreference, (len(offerdata.objectreference) - 2),(len(offerdata.objectreference) - 2)) =" + searchtbox4.Text; numberofconditions++; }
if (searchtbox5.Text != "")
{ if (numberofconditions > 0) { and = " AND "; } condition += and + " substring(offerdata.objectreference, (len(offerdata.objectreference) - 1),(len(offerdata.objectreference) - 1)) =" + searchtbox5.Text; numberofconditions++; }
if (searchtbox6.Text != "")
{ if (numberofconditions > 0) { and = " AND "; } condition += and + " substring(offerdata.objectreference, (len(offerdata.objectreference)) ,(len(offerdata.objectreference))) =" + searchtbox6.Text; numberofconditions++; }
if (numberofconditions > 0)
{
RefreshTable(condition);
}
jag använder dessa villkor i metoden RefreshTable, där jag hämtar värden med en sql datareader:
SqlDataReader reader = this.CustomQuery("SELECT calculation.costcarrier AS [description], calculation.supplierID AS [calcsupplierID], calculation.pieces AS [calcpieces], calculationbase.costcarrier AS [costcarrier], article.articlenr AS [articlenumber], offerdata.number AS [offernumber], offerdata.objectreference AS [reference], offerdata.responsibleID AS [offerresponsibleID], offerdata.responsibleproductionID AS [responsibleproduction], offerdata.deliverydate, suppliers.suppliername AS [customername] FROM Sanji_Database.Sanji_admin.calculation LEFT OUTER JOIN Sanji_Database.Sanji_admin.calculationbase ON (calculation.calculationbaseID = calculationbase.ID) LEFT OUTER JOIN Sanji_Database.Sanji_admin.offerarticles ON (calculation.offerarticleID = offerarticles.offerartID) LEFT OUTER JOIN Sanji_Database.dbo.article ON (offerarticles.articleID = article.ID) LEFT OUTER JOIN Sanji_Database.Sanji_admin.offerdata ON (offerarticles.offerID = offerdata.ID) LEFT OUTER JOIN Sanji_Database.dbo.suppliers ON (offerdata.customerID = suppliers.ID)"+condition
condition innehåller resultatet från koden ovanför denna kodbit.
ett exempel som fungerar är då jag söker efter numret 123456, anger jag 1 i första rutan och 6 i sista så får jag fram resultatet, men anger jag ett nummer i någon av de 4 mellersta textboxarna så hittar den ingenting.
går det inte att plocka ut andra tecken än första och sista kanske?
Mvh
