19. februar 2010 - 21:49Der er
7 kommentarer og 1 løsning
Handlingen 'Like' kan ikke udføres på System.Int64
Hey drenge... Er ved at lave et søgefelt i mit program, og det hele ser rigtigt ud, men når jeg kører det melder det fejlen : Handlingen 'Like' kan ikke udføres på System.Int64
Her er koden.
private void textBox1_TextChanged(object sender, EventArgs e) { if (textBox1.Text == "") { } else { DataSet ds = iDDatabaseDataSet1; SqlCommand selectMobileID = new SqlCommand("SELECT * FROM MobilTable WHERE [Telefon Nummer] LIKE '"+textBox1.Text+"%'");
ds.Tables["MobilTable"].DefaultView.RowFilter = "[Telefon Nummer] LIKE '%" + textBox1.Text + "%'"; //Handlingen 'Like' kan ikke udføres på System.Int64 MobilGridView.DataSource = ds.Tables["MobilTable"]; } }
Der er flere ting galt der... dels skønhedsmæssige, dels logiske.
Det skønhedsmæssige ligger i at du kalder sql direkte fra en event textchanged, altså i dit præsentationslag - det er virkelig dårlig stil og understreger ligesom den manglende kvalitet.
Den logiske fejl består i at du prøver at udføre en string function på et tal. Hvis du skal dette, skal du konvertere til varchar først, altså: SqlCommand selectMobileID = new SqlCommand("SELECT * FROM MobilTable WHERE convert(varchar(12), [Telefon Nummer]) LIKE '"+textBox1.Text+"%'");
Det skønhedsmæssige kommer lidt efter, Har kun lagt det ind for test formål lige nu, da det er noget jeg tester. :) udover det er jeg ret ny på C# .. ^^ Men tak for heads up. Vil lige prøve det af og vende tilbage :)
Hvis koden stadig er lidt for rodet og underlig for dig er du velkommen til at komme med input til hvordan den kan optimeres da jeg hellere end gerne vil lære meget C#. ^^
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.