Avatar billede haunted Nybegynder
08. september 2002 - 21:54 Der er 6 kommentarer og
4 løsninger

Syntaksfejl i sql

Hej med jer..

Jeg har et problem i et C++ program jeg er ved at lave!

Jeg har en case sætning hvor jeg switcher på en updatekind...

case ukDelete : sqlStmt = "DELETE FROM faktura"
"WHERE FAKTURAID = " + fakturaId->Text +
" AND VAREID = " + var + ")";
break;

Når jeg kører programmet og prøver at udføre denne delete, så kommer den ud med:

General SQL error, token unknown '='

Jeg har undersøgt værdierne jeg prøver at delete med og der står noget i begge variable...
Avatar billede neteffect Nybegynder
08. september 2002 - 22:06 #1
DELETE * FROM ....

Desuden, hvis konstruktionen fakturaId->Text er en tekststreng og feltet FAKTURAID i givet fald forhåbentlig så også er det, skal der quotes omkring, altså:
... WHERE FAKTURAID = '" + fakturaId->Text +
"' AND VAREID = " + var + ")";
Avatar billede haunted Nybegynder
08. september 2002 - 22:10 #2
Nu har jeg tilføjet *, men nu siger den: token unknown '*'

"DELETE * FROM faktura"
"WHERE FAKTURAID = " + fakturaId->Text +
" AND VAREID = " + var + ")";
Avatar billede haunted Nybegynder
08. september 2002 - 22:13 #3
Jeg takker af for iaften... men ser på evt. svar i morgen tidlig.

På forhånd tak!
Avatar billede neteffect Nybegynder
08. september 2002 - 22:18 #4
Hov, der skal et mellerum inf foran WHERE, altså " WHERE...
Avatar billede killer_bee Nybegynder
08. september 2002 - 22:30 #5
case ukDelete : sqlStmt = "DELETE FROM faktura"
"WHERE FAKTURAID = " + fakturaId->Text +
" AND VAREID = " + var + ")";  <----- ')' det er en 'lukke' parentes men hvor er 'åbne' ?? er det ik det den brokker sig over?
break;

Prøv dette :
sqlStmt = "DELETE FROM faktura"
" WHERE FAKTURAID = " + fakturaId->Text +
" AND VAREID = " + var ;
break;
Avatar billede soepro Nybegynder
09. september 2002 - 10:38 #6
Problemet er givet at der mangler blanke mellem faktura og 'WHERE' i din SQL-sætning, samt at du har en "blomstrende" slut-parentes.

Lav en debug af dit program, og check hvad sqlStmt rent faktisk ender med at indeholde. Husk i den sammenhæng på at din SQL-fortolker formentlig kræver at tekststrenge omkranses af enkelt "pling"'er (') og at tal IKKE skal omkranses - altså noget i stil med:

DELETE FROM faktura WHERE fakturaid = '2712-2' AND vareid = 2712

Du kan få enkelt pling ind i din stregn vha. \', altså noget i stil med:

sqlStmt = "DELETE FROM faktura WHERE fakturaid = \'" + fakturaId->Test + " AND vareid = " + IntToStr(var);

(Idet jeg antager at "fakturaId->Text" giver en string, og "var" er en int.)
Avatar billede stringbuffer Nybegynder
09. september 2002 - 15:32 #7
Prøv følgende:

case ukDelete : sqlStmt = "DELETE FROM faktura"
"WHERE (FAKTURAID = '" + fakturaId->Text +
"' AND VAREID = '" + var + "')";
break
Avatar billede stringbuffer Nybegynder
09. september 2002 - 15:33 #8
Damnit, skulle have været et svar... hermed svar.
Avatar billede haunted Nybegynder
09. september 2002 - 17:03 #9
"DELETE FROM fakturaLinier"
" WHERE FAKTURAID = " + fakturaId->Text +
" AND VAREID = "    + var;

ser ud til at virke!

Tak for hjælpen...
Avatar billede stringbuffer Nybegynder
10. september 2002 - 13:29 #10
:)
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
Kurser inden for grundlæggende programmering

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