Avatar billede alpapa Nybegynder
30. juni 2003 - 13:57 Der er 16 kommentarer og
1 løsning

Database problemer

Hejsa Eksperter

Hvorfor virker denne stump kode ikke?

try
{
MinCommandOut = new OleDbDataAdapter("SELECT MAX(ID) FROM kunde_produkt WHERE ID = " + Session["kunde_id"] + "",MinCnx);
DataSet DS_2  = new DataSet();
MinCommandOut.Fill(DS_2);
DataTable MyTable_2 = new DataTable();
MyTable_2 = DS_2.Tables[0];
int new_id  = (int)MyTable_2.Rows[0]["ID"];
}
catch(Exception b)
{
throw;
}
finally
{
if (MinCnx.State == ConnectionState.Open)
{
MinCnx.Close();
}
}

Fejl: No value given for one or more required parameters.

alpapa
Avatar billede alpapa Nybegynder
30. juni 2003 - 14:01 #1
PS:
En Response.Write(Session["kunde_id"]); er lig: ivsj2bfnr4ntoceqnnwt3n2x
Avatar billede sekhmet_ds Nybegynder
30. juni 2003 - 14:14 #2
Din SQL streng skal være: SELECT MAX(ID) FROM kunde_produkt WHERE ID = '" + Session["kunde_id"] + "'

kunde-id er, så vidt jeg kan se, en streng og derfor skal der apostroffer (') om.
Avatar billede alpapa Nybegynder
30. juni 2003 - 14:17 #3
Hvis jeg skriver '" + Session["kunde_id"] + "'
får jeg fejlen: Data type mismatch in criteria expression.
Avatar billede sekhmet_ds Nybegynder
30. juni 2003 - 14:20 #4
Hvilken type er ID i din database?
Avatar billede alpapa Nybegynder
30. juni 2003 - 14:21 #5
Det er langt heltal
Avatar billede sekhmet_ds Nybegynder
30. juni 2003 - 14:25 #6
I så fald forstår jeg ikke helt at du sammenligner den med Session["kunde_id"] som jo tilsyneladen ikke er et heltal.

Desuden giver det ikke specielt god mening at hente max ID ud, når du i din WHERE clause siger ID = værdi (forudsat selvf at ID er unikt).
Avatar billede wivel Nybegynder
30. juni 2003 - 14:28 #7
Er du sikker på at kunde_id er lagt korrekt op i Sessions objektet før du bruger det igen?

En anden ting er at altid bør enten caste eller konvertere det du henter fra Session cachen til den type du ved den er, da den altid caches som Object.
Avatar billede alpapa Nybegynder
30. juni 2003 - 14:35 #8
Sorry, det skal selvfølgelig være:
MinCommandOut = new OleDbDataAdapter("SELECT MAX(ID) FROM kunde_produkt WHERE '(ses=" + Session["kunde_id"] + ")'",MinCnx);

ses er i basen sat til tekst.

Nu skriver den: Column 'ID' does not belong to table Table.
Avatar billede alpapa Nybegynder
30. juni 2003 - 14:37 #9
wivel >> vil gerne lære lidt mere om casting, boxing/unboxing og converte - kender du nogle gode sites?
Avatar billede sekhmet_ds Nybegynder
30. juni 2003 - 14:45 #10
wivel>> I det her tilfælde kan det nu være lige meget om han caster det til en streng, da der automatisk konverteres dertil ved kald til ToString().

alpap>> Så skal din SQL sætning være: SELECT MAX(ID) FROM kunde_produkt WHERE (ses = '" + Session["kunde_id"] + "')
Avatar billede alpapa Nybegynder
30. juni 2003 - 14:53 #11
("SELECT MAX(ID) FROM kunde_produkt WHERE (ses = '" + Session["kunde_id"] + "')",MinCnx);

Fejl: Column 'ID' does not belong to table Table.

ID er primærnøgle i kunde_produkt, den er sat til auto og langt heltal (Access)
Avatar billede sekhmet_ds Nybegynder
30. juni 2003 - 15:03 #12
Sikker på det er den linje den brokker sig over?
Avatar billede alpapa Nybegynder
30. juni 2003 - 15:08 #13
System.ArgumentException:
Column 'ID' does not belong to table Table. at System.Data.DataRow.get_Item(String columnName) at ASP.produkter_aspx.VareKurv(Object Sender, EventArgs E) in D:\Inetpub\wwwroot\websites\whyweb.dk\produkter.aspx:line 58

linie 58:  int new_id = (int)MyTable2.Rows[0]["ID"];

Denne linie har jeg med succes brugt flere gange før - kan du greje hvad der er galt???
Avatar billede sekhmet_ds Nybegynder
30. juni 2003 - 15:14 #14
Det er fordi det du henter ud fra database er det maksimale ID nummer, ikke ID kolonnen.

Hvis du bruger denne SQL sætning i stedet: SELECT MAX(ID) AS maxID FROM kunde_produkt WHERE (ses = '" + Session["kunde_id"] + "')

Og så henter det med: int new_id = (int)MyTable2.Rows[0]["maxID"];

Burde det virke.
Avatar billede alpapa Nybegynder
30. juni 2003 - 15:18 #15
FANTASTISK - du er genial ;-)
Avatar billede sekhmet_ds Nybegynder
30. juni 2003 - 15:18 #16
Det ved jeg godt *G*
Avatar billede alpapa Nybegynder
30. juni 2003 - 15:20 #17
hæhæ - great :->
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