17. april 2004 - 14:12
Der er
18 kommentarer og 1 løsning
SQL: Select Statement
Hej, Jeg skal lave et select statement hvor jeg jeg vil have alle dem hvor feltet navn er lig med en variabel i mit program: Query1->SQL->Add("SELECT FirmaID FROM tblFirma WHERE Navn = "); Query1->SQL->Add(navn.c_str()); Det virker ikke, det kommer runtime error hvor den fortæller mig, at værdien af navn ikke er et felt i databasen.
Annonceindlæg fra NetNordic
17. april 2004 - 14:34
#1
Dette skulle kunne gøre det: Query1->SQL->Add("SELECT FirmaID FROM tblFirma WHERE Navn='" + navn + "'"); Men det kommer an på hvilken datatype navn er... Her går jeg udfra at navn er en AnsiString.
17. april 2004 - 14:44
#2
med din sætning siger den: [C++ Error] frmDTA.cpp(39): E2034 Cannot convert 'string' to 'AnsiString' Hvis jeg tilføjer .c_str() efter navn så det ser sådan her ud: Query1->SQL->Add("SELECT FirmaID FROM tblFirma WHERE Navn='" + navn + "'"); siger den: [C++ Error] frmDTA.cpp(39): E2085 Invalid pointer addition
17. april 2004 - 14:44
#3
Query1->SQL->Add("SELECT FirmaID FROM tblFirma WHERE Navn='" + navn.c_str() + "'");
17. april 2004 - 14:55
#4
Prøv: string sqlstr = "SELECT FirmaID FROM tblFirma WHERE Navn='" + navn + "'"; Query1->SQL->Add(sqlstr.c_str());
17. april 2004 - 15:14
#5
Jeg løste den med denne her lille fidus: AnsiString fNavn = navn.c_str();
17. april 2004 - 15:16
#6
Men nu har jeg et andet problem: når nu jeg gerne vil have dem hvor firmaID = id (integer) altså: Query1->SQL->Add("SELECT Navn FROM tblProjekt WHERE FirmaID ='" + FirmaID + "'");
17. april 2004 - 15:16
#7
det virker ikke... og Query1->SQL->Add("SELECT Navn FROM tblProjekt WHERE FirmaID =" + FirmaID); virker heller ikke...
17. april 2004 - 15:28
#8
anyone?
17. april 2004 - 15:58
#9
Det skal virke på din sidste måde, afhængig af hvad datatype FirmaID er... ;o) Hvilken datatype er FirmaID og hvilken fejl får du?
17. april 2004 - 16:00
#10
--------------------------- Debugger Exception Notification --------------------------- Project Teleperformance.exe raised exception class EDBEngineError with message 'General SQL error. [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'FROM'.'. Process stopped. Use Step or Run to continue. --------------------------- OK Help ---------------------------
17. april 2004 - 16:01
#11
FirmaID er int i tabellen og int i applikationen
17. april 2004 - 16:03
#12
Hmm er ikke så stærk i at convertere mellem datatyper, SQL->Add() forventer et argument som skal være ansistring. Prøv: Query1->SQL->Add("SELECT Navn FROM tblProjekt WHERE FirmaID =" + (AnsiString)FirmaID);
17. april 2004 - 16:07
#13
hmm... sikker på det? Der er jo ikke syntax fejl i c++ koden, men i SQL statementet! [SQL Server]Incorrect syntax near the keyword 'FROM'.'.
17. april 2004 - 16:11
#14
Ret sikker på du ikke bare kan blande AnsiString og Int... Men du kan jo prøve og skrive det i en variabel og skrive indholdet ud i eks. et editfelt. AnsiString sql; sql = "SELECT Navn FROM tblProjekt WHERE FirmaID =" + (AnsiString)FirmaID); Edit1->Text = sql; Query->SQL->Add(sql); For at forstå hvorfor der er syntaksdejl i en SQL sætning er der brug for at vide hvordan den helt præcist ser ud :o)
17. april 2004 - 16:13
#15
Prøv: char sqlstr[200]; sprintf(sqlstr,"SELECT Navn FROM tblProjekt WHERE FirmaID = %d", FirmaID); Query1->SQL->Add(sqlstr);
24. april 2004 - 17:42
#16
Har du prøvet det sidste ?
24. april 2004 - 23:06
#17
jep det fungere... sorry jeg ikke har lukket... Tak
24. april 2004 - 23:07
#18
arne_v: lægger du et svar?
24. april 2004 - 23:18
#19
OK
Kurser inden for grundlæggende programmering