Avatar billede jriff Nybegynder
17. marts 2005 - 16:01 Der er 10 kommentarer og
1 løsning

Access og parametre til SQL

Hej Alle!

Jeg har lavet det her query:
OleDbCommand cmd3 = new OleDbCommand("insert into tilmeldinger (nummerid, fornavn, efternavn, adresse, postnummer, by, telefon, email, antalbilletter) values (?, ?, ?, ?, ?, ?, ?, ?, ?)",myDB);

cmd3.Parameters.Add(id.ToString());
cmd3.Parameters.Add(tbxFornavn.Text);
cmd3.Parameters.Add(tbxEfternavn.Text);
cmd3.Parameters.Add(tbxAdresse.Text);
cmd3.Parameters.Add(tbxPostnummer.Text);
cmd3.Parameters.Add(tbxBy.Text);
cmd3.Parameters.Add(tbxTelefon.Text);
cmd3.Parameters.Add(tbxEmail.Text);
String nummer=(String)Session["nummer"];
cmd3.Parameters.Add("@antalbilletter", nummer.Substring(0,1).ToString());

TextBox1.Text=cmd3.CommandText;
cmd3.ExecuteNonQuery();   


Men jeg får følgende fejl:
The OleDbParameterCollection only accepts non-null OleDbParameter type objects, not String objects.

Line 102:        cmd3.Parameters.Add(id.ToString());
Line 103:        cmd3.Parameters.Add(tbxFornavn.Text);
Line 104:        cmd3.Parameters.Add(tbxEfternavn.Text);   
(Den øverste står med rødt)

InvalidCastException: The OleDbParameterCollection only accepts non-null OleDbParameter type objects, not String objects.]
  System.Data.OleDb.OleDbParameterCollection.ValidateType(Object value)
  System.Data.OleDb.OleDbParameterCollection.Add(Object value)
  TeliaEnesteEne.usrRegister.Button1_Click(Object sender, EventArgs e) in c:\documents and settings\jacob\my documents\inetpub\wwwroot\teliaenesteene\usrregister.ascx.cs:102
  System.Web.UI.WebControls.Button.OnClick(EventArgs e)
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
  System.Web.UI.Page.ProcessRequestMain()


Jeg har ingen idé om hvorfor det ikke virker, for det er sådan det står beskrevet i diverse bøger etc.

Har I nogen idéer?

- Jacob
Avatar billede arne_v Ekspert
17. marts 2005 - 16:04 #1
Jeg plejer altså at have nogle flere argumenter til Add
Avatar billede arne_v Ekspert
17. marts 2005 - 16:05 #2
Normalt skal du angive:
  navn
  data type
  værdi
til en parameter
Avatar billede jriff Nybegynder
17. marts 2005 - 16:06 #3
Ok? Hvilke? Er du sikker på at du ikke mener til navngivne parametre? Altså: cmd3.Parammeters.Add("@fornavn", tbxFornavn.Text);  ? Med Access kan man jo ikke navngive parametre.
Avatar billede arne_v Ekspert
17. marts 2005 - 16:12 #4
Jeg har altid bruge:

        ins.Parameters.Add("@xxx", OleDbType.YyyYyyy);
        ins.Parameters("@xxx").Value = data;

alligevel
Avatar billede jriff Nybegynder
17. marts 2005 - 16:18 #5
Men det giver jo ingen mening når ikke man kan bruge navngivne parametre i Access :-(
Avatar billede arne_v Ekspert
17. marts 2005 - 16:43 #6
Rækkefølgen skal stadigvæk stemme.

Men jeg har brugt den mange gange.
Avatar billede jriff Nybegynder
17. marts 2005 - 17:20 #7
Nu har jeg prøvet dit eksempel - hvis jeg laver en TextBox1.Text=cmd3.CommandText; Så kan jeg se at der stadig kun står spørgsmålstegn. Det er meget mærkeligt. Men man kan måske ikke se hvilke parametre der er sat ind med .CommandText?
Avatar billede jriff Nybegynder
17. marts 2005 - 19:55 #8
Arne! Dit forslag virkede rent faktisk! Det var fordi jeg lavede den klassiske fejl med at kalde en kolonne i tabellen for "by". Derfor fik jeg en syntax error in query... Sorry :-)

Smid et svar så du kan få dine point!
Avatar billede arne_v Ekspert
17. marts 2005 - 19:57 #9
ok
Avatar billede arne_v Ekspert
10. april 2005 - 17:44 #10
så mangler du bare at acceptere
Avatar billede jriff Nybegynder
11. april 2005 - 09:09 #11
Det har du ret i :-)
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