Avatar billede Red0z Nybegynder
19. februar 2010 - 21:49 Der 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"];
            }
        }
Avatar billede janus_007 Nybegynder
19. februar 2010 - 22:35 #1
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+"%'");
Avatar billede Red0z Nybegynder
19. februar 2010 - 23:45 #2
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 :)
Avatar billede Red0z Nybegynder
20. februar 2010 - 01:00 #3
Og desværre virkede dit råd ikke, den melder samme fejl. :) Andre idéer til hvad der kunne hjælpe ? :)
Avatar billede Red0z Nybegynder
20. februar 2010 - 02:34 #4
Det virker på sin vis, bare ikke hvis jeg laver noget der har noget at gøre med INT's.
Avatar billede janus_007 Nybegynder
20. februar 2010 - 06:03 #5
Fejlen ligger her (jeg så forkert før haha):

  ds.Tables["MobilTable"].DefaultView.RowFilter = "[Telefon Nummer] LIKE '%" + textBox1.Text + "%'";

Men jeg forstår ikke hvorfor du både har en Sql og et RowFilter? Fjern RowFilter, så virker det :)
Avatar billede Red0z Nybegynder
21. februar 2010 - 04:30 #6
Det virker lige præcis som det skulle ^^

Det er nu sat op som følgende:

private void MobilTLFTXT_TextChanged(object sender, EventArgs e)
        {
            if (MobilTLFTXT.Text == "")
            {
                DS.Tables["MobilTable"].DefaultView.RowFilter = String.Empty;
            }
            else
            {
                SqlCommand selectMobileID = new SqlCommand("SELECT * FROM MobilTable WHERE [Telefon Nummer] LIKE '[" + MobilTLFTXT.Text + "]*'", ConnString);
                DAMobil.SelectCommand = selectMobileID;
                DAMobil.Fill(DS, "MobilTable");
                DS.Tables["MobilTable"].DefaultView.RowFilter = "[Telefon Nummer] LIKE '" + MobilTLFTXT.Text + "*'";

                dgMobile.DataSource = DS.Tables["MobilTable"];
            }
        }

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#. ^^
Avatar billede Red0z Nybegynder
21. februar 2010 - 19:37 #7
Og du må forresten godt lægge et svar, hehe. :)
Avatar billede janus_007 Nybegynder
04. marts 2010 - 13:33 #8
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester