Avatar billede scarface335 Nybegynder
05. september 2006 - 11:33 Der er 18 kommentarer og
1 løsning

Problemer med parameter

Hej Arne V, for det første vil jeg lige sige rigtig god artikel!

Jeg er ved at lave en asp.Net application, men skriver alt koden i cs klassen da jeg er mere fortrolig med c#:
Jeg har skrevet sådan  her:

DateTime dt = System.DateTime.Today;
       
        SqlDataSource7.InsertCommand = "INSERT INTO RessourceReg (BogDato, OrdreNr, InternTekst, KundeNavn, TimeType, TimeAntal, RessourceType, RessourceAntal, MedarbejderId, Dato, OrdreGruppe) VALUES (@BogDato, @OrdreNr, @InternTekst, @KundeNavn, @TimeType, @TimeAntal, @RessourceType, @RessourceAntal, @MedarbejderId, @Dato, @OrdreGruppe)";
        SqlDataSource7.InsertParameters.Add("BogDato", TypeCode.DateTime, dt.ToString());
        SqlDataSource7.InsertParameters.Add("OrdreNr", TypeCode.String, TextBox2.Text);
        SqlDataSource7.InsertParameters.Add("InternTekst", TypeCode.String, GridView1.Rows[0].Cells[3].Text);
        SqlDataSource7.InsertParameters.Add("KundeNavn", TypeCode.String, GridView1.Rows[0].Cells[2].Text);
        SqlDataSource7.InsertParameters.Add("TimeType", TypeCode.String, DropDownList1.SelectedValue.ToString());
        SqlDataSource7.InsertParameters.Add("TimeAntal", TypeCode.Double, TextBox3.Text);
        SqlDataSource7.InsertParameters.Add("RessourceType", TypeCode.String, DropDownList2.SelectedValue.ToString());
        SqlDataSource7.InsertParameters.Add("RessourceAntal", TypeCode.Double, TextBox4.Text);
        SqlDataSource7.InsertParameters.Add("MedarbejderId", TypeCode.String, TextBox1.Text);
        SqlDataSource7.InsertParameters.Add("Dato", TypeCode.DateTime, Calendar1.SelectedDate.ToString());
        SqlDataSource7.InsertParameters.Add("OrdreGruppe", TypeCode.String, GridView1.Rows[0].Cells[1].Text);

        SqlDataSource7.Insert();

og får fejlen:

ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the variable '@BogDato'.
Avatar billede scarface335 Nybegynder
05. september 2006 - 11:42 #1
Hmm srry troede spørgsmålet blev oprettet til arne v når det er oprettet til en artikel, men hej til alle i andre, og artiklen som jeg taler om er her http://www.eksperten.dk/artikler/831
Avatar billede brassmaid Nybegynder
05. september 2006 - 13:21 #2
Det ser ud til at du mangler et @ når du tilføjer dine parameters. Altså

SqlDataSource7.InsertParameters.Add("@BogDato", TypeCode.DateTime, dt.ToString());

ellers ved den ikke hvilken parameter der er tale om.
Avatar billede brassmaid Nybegynder
05. september 2006 - 13:21 #3
Det samme skal du gøre for de andre.
Avatar billede scarface335 Nybegynder
05. september 2006 - 13:27 #4
Jeg går udfra du mener sådan her:
SqlDataSource7.InsertCommand = "INSERT INTO RessourceReg (BogDato, OrdreNr, InternTekst, KundeNavn, TimeType, TimeAntal, RessourceType, RessourceAntal, MedarbejderId, Dato, OrdreGruppe) VALUES (@BogDato, @OrdreNr, @InternTekst, @KundeNavn, @TimeType, @TimeAntal, @RessourceType, @RessourceAntal, @MedarbejderId, @Dato, @OrdreGruppe)";
        SqlDataSource7.InsertParameters.Add("@BogDato", TypeCode.DateTime, dt.ToString());
        SqlDataSource7.InsertParameters.Add("@OrdreNr", TypeCode.String, TextBox2.Text);
        SqlDataSource7.InsertParameters.Add("@InternTekst", TypeCode.String, GridView1.Rows[0].Cells[3].Text);
        SqlDataSource7.InsertParameters.Add("@KundeNavn", TypeCode.String, GridView1.Rows[0].Cells[2].Text);
        SqlDataSource7.InsertParameters.Add("@TimeType", TypeCode.String, DropDownList1.SelectedValue.ToString());
        SqlDataSource7.InsertParameters.Add("@TimeAntal", TypeCode.Double, TextBox3.Text);
        SqlDataSource7.InsertParameters.Add("@RessourceType", TypeCode.String, DropDownList2.SelectedValue.ToString());
        SqlDataSource7.InsertParameters.Add("@RessourceAntal", TypeCode.Double, TextBox4.Text);
        SqlDataSource7.InsertParameters.Add("@MedarbejderId", TypeCode.String, TextBox1.Text);
        SqlDataSource7.InsertParameters.Add("@Dato", TypeCode.DateTime, Calendar1.SelectedDate.ToString());
        SqlDataSource7.InsertParameters.Add("@OrdreGruppe", TypeCode.String, GridView1.Rows[0].Cells[1].Text);

        SqlDataSource7.Insert();

Men jeg får stadig fejlen:

ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the variable '@BogDato'.
Avatar billede brassmaid Nybegynder
05. september 2006 - 14:16 #5
ok, det var en være gang sluder jeg fik sagt der.

SqlDataSource7.InsertCommand = "INSERT INTO RessourceReg (BogDato, OrdreNr, InternTekst, KundeNavn, TimeType, TimeAntal, RessourceType, RessourceAntal, MedarbejderId, Dato, OrdreGruppe) VALUES (?BogDato, ?OrdreNr, ?InternTekst, ?KundeNavn, ?TimeType, ?TimeAntal, ?RessourceType, ?RessourceAntal, ?MedarbejderId, ?Dato, ?OrdreGruppe)";
        SqlDataSource7.InsertParameters.Add("?BogDato", TypeCode.DateTime, dt.ToString());
        SqlDataSource7.InsertParameters.Add("?OrdreNr", TypeCode.String, TextBox2.Text);
        SqlDataSource7.InsertParameters.Add("?InternTekst", TypeCode.String, GridView1.Rows[0].Cells[3].Text);
        SqlDataSource7.InsertParameters.Add("?KundeNavn", TypeCode.String, GridView1.Rows[0].Cells[2].Text);
        SqlDataSource7.InsertParameters.Add("?TimeType", TypeCode.String, DropDownList1.SelectedValue.ToString());
        SqlDataSource7.InsertParameters.Add("?TimeAntal", TypeCode.Double, TextBox3.Text);
        SqlDataSource7.InsertParameters.Add("?RessourceType", TypeCode.String, DropDownList2.SelectedValue.ToString());
        SqlDataSource7.InsertParameters.Add("?RessourceAntal", TypeCode.Double, TextBox4.Text);
        SqlDataSource7.InsertParameters.Add("?MedarbejderId", TypeCode.String, TextBox1.Text);
        SqlDataSource7.InsertParameters.Add("?Dato", TypeCode.DateTime, Calendar1.SelectedDate.ToString());
        SqlDataSource7.InsertParameters.Add("?OrdreGruppe", TypeCode.String, GridView1.Rows[0].Cells[1].Text);


Det her burde virke, eller i det mindste smide en anden fejl :-)
        SqlDataSource7.Insert();
Avatar billede scarface335 Nybegynder
05. september 2006 - 14:55 #6
Ja det smider denne fejl

ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the variable '@P1BogDato'
Avatar billede brassmaid Nybegynder
05. september 2006 - 15:13 #7
ok jeg tror at jeg har en dårlig dag :-)

jeg har gjort følgende

string sqlString = "insert into userlog (logdate, userdata) values (@logdate,@userdata)";
            sqlCommand = new SqlCommand(sqlString, sqlTransaction.Connection, sqlTransaction);
            SqlParameter sqlParameter = new SqlParameter("@logdate", DateTime.Now.ToString());
            sqlParameter.SqlDbType = SqlDbType.VarChar;
            sqlParameter.Size = 50;
            sqlCommand.Parameters.Add(sqlParameter);
Avatar billede brassmaid Nybegynder
05. september 2006 - 15:13 #8
så det er altså @ der skal bruges
Avatar billede scarface335 Nybegynder
05. september 2006 - 15:20 #9
ja men det burde også kunne gøres med en datasource
Avatar billede brassmaid Nybegynder
05. september 2006 - 15:26 #10
ja, hvornår kommer fejlen under compilering eller når den køre
Avatar billede scarface335 Nybegynder
06. september 2006 - 08:25 #11
Fejlen kommer når jeg kører programmet når den når til linjen:
sqlDatasource7.insert();
Avatar billede brassmaid Nybegynder
06. september 2006 - 08:59 #12
kan du ikke poste kode for hele metoden.
Avatar billede brassmaid Nybegynder
06. september 2006 - 09:48 #13
Det her virker hos mig

SqlDataSource7.InsertCommand = "INSERT INTO test (hej) VALUES (@hej)";
SqlDataSource7.InsertParameters.Add("hej", TypeCode.Int32, "3");   
SqlDataSource7.Insert();
Avatar billede scarface335 Nybegynder
06. september 2006 - 10:12 #14
DateTime dt = System.DateTime.Today;

        SqlDataSource7.InsertParameters.Clear();

        SqlDataSource7.InsertCommand = "INSERT INTO RessourceReg (BogDato, OrdreNr, InternTekst, KundeNavn, TimeType, TimeAntal, RessourceType, RessourceAntal, MedarbejderId, Dato, OrdreGruppe) VALUES (@BogDato, @OrdreNr, @InternTekst, @KundeNavn, @TimeType, @TimeAntal, @RessourceType, @RessourceAntal, @MedarbejderId, @Dato, @OrdreGruppe)";
        SqlDataSource7.InsertParameters.Add("BogDato", TypeCode.DateTime, dt.ToString());
        SqlDataSource7.InsertParameters.Add("OrdreNr", TypeCode.String, TextBox2.Text);
        SqlDataSource7.InsertParameters.Add("InternTekst", TypeCode.String, GridView1.Rows[0].Cells[3].Text);
        SqlDataSource7.InsertParameters.Add("KundeNavn", TypeCode.String, GridView1.Rows[0].Cells[2].Text);
        SqlDataSource7.InsertParameters.Add("TimeType", TypeCode.String, DropDownList1.SelectedValue.ToString());
        SqlDataSource7.InsertParameters.Add("TimeAntal", TypeCode.Double, TextBox3.Text);
        SqlDataSource7.InsertParameters.Add("RessourceType", TypeCode.String, DropDownList2.SelectedValue.ToString());
        SqlDataSource7.InsertParameters.Add("RessourceAntal", TypeCode.Double, TextBox5.Text);
        SqlDataSource7.InsertParameters.Add("MedarbejderId", TypeCode.String, TextBox1.Text);
        SqlDataSource7.InsertParameters.Add("Dato", TypeCode.DateTime, Calendar1.SelectedDate.ToString());
        SqlDataSource7.InsertParameters.Add("OrdreGruppe", TypeCode.String, GridView1.Rows[0].Cells[1].Text);


        SqlDataSource7.Insert();
Avatar billede scarface335 Nybegynder
06. september 2006 - 10:19 #15
Når du opsætter din datasource connecter du så til den med odbc, eller peger din fatasource bare på en fil, jeg bruger odbc kan det have nogen betydning ?
Avatar billede brassmaid Nybegynder
06. september 2006 - 11:28 #16
jeg er connected til mssql, hvilken DB bruger du?
Avatar billede scarface335 Nybegynder
06. september 2006 - 11:57 #17
jeg bruger odbc datasource som forbinder til en ms sql database på en server
Avatar billede scarface335 Nybegynder
06. september 2006 - 12:51 #18
Har fået det til at virke ved ikke at bruge odbc så smid et svar ofg du får dine point
Avatar billede brassmaid Nybegynder
06. september 2006 - 13:30 #19
svar
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