Försöker att hämta data med hjälp av ett villkor som överenstämmer med en nyckel i tabellen ORC. y är en variabel av typen integer som innan SQL satsen initieras ett tal att jämföras med IDMonth i ORC. Det är bara att ta bort enkelfnuttarna runt: Jag har försökt med att ta bort enkelfnuttarna men får då inte talet från y representerat i SQL satsen. Det borde fungera... Kan du posta ett exempel på hur strängen ser ut innan du skickar in den till jet? Typen std::string har ingen konvertering från integer till sträng. Du kan göra så här Nej det vill sig inte Martin... Om jag däremot gör så här så får jag med mig talet in i strängvarianeln strSQL men skall det behöva vara så här krångligt? Så här: Tack Martin för formaterings alternativet. Det hjälper mig att få ut det jag frågar efter, nämligen värdet ur en integer i SQL satsen. >men skall det behöva vara så här krångligt?SQL sats i VC++ applikation
Hur skriver jag när y är av typen integer?
Om y vore en string skulle satsen se ut så här.
m_strSQL6 = _T("SELECT COUNT(ORC.IDDay) AS DaysToStay FROM ORC WHERE ORC.IDMonth = '" + y + "'");Sv: SQL sats i VC++ applikation
m_strSQL6 = _T("SELECT COUNT(ORC.IDDay) AS DaysToStay FROM ORC WHERE ORC.IDMonth = " + y );
Borde funka. Om det inte funkar får du gärna tala om vilken databasmotor du kör mot.Sv: SQL sats i VC++ applikation
Jag kör mot databasmotorn JET.Sv: SQL sats i VC++ applikation
Sv: SQL sats i VC++ applikation
std::ostringstream strSQL6;
strSQL6 << "SELECT COUNT(ORC.IDDay) AS DaysToStay FROM ORC WHERE ORC.IDMonth = " << y;
Du kan också använda sprintf eller CString::format() för att göra en sträng av y.Sv: SQL sats i VC++ applikation
CString strSQL;
for(int y=1;y<=12;y++)
{
strSQL = _T("SELECT COUNT(ORC.IDDay) AS DaysToStay FROM ORC WHERE ORC.IDMonth = " +y);
}
Hur får jag strSQL att i varje varv i for loopen innehålla strängen och talet från integern y?Sv: SQL sats i VC++ applikation
CString strSQL;
for(int y=1;y<=12;y++)
{
itoa(y,strY,10);
strSQL = _T("SELECT COUNT(ORC.IDDay) AS DaysToStay FROM ORC WHERE ORC.IDMonth = ");
strSQL += strY;
}Sv: SQL sats i VC++ applikation
for(int y=1;y<=12;y++) {
CString strSQL;
strSQL.Format("SELECT COUNT(ORC.IDDay) AS DaysToStay FROM ORC WHERE ORC.IDMonth = %d", y);
database.execute(strSQL); // automatisk kovertering till c-sträng
}
eller
for(int y=1;y<=12;y++) {
std::ostringstream sstrSQL;
sstrSQL << "SELECT COUNT(ORC.IDDay) AS DaysToStay FROM ORC WHERE ORC.IDMonth = " << y;
database.execute(sstrSQL.str().str()); // hämta c-sträng
}Sv: SQL sats i VC++ applikation
Sv: SQL sats i VC++ applikation
Det hade faktiskt varit krångligare om det inte hade varit så; det handlar om typsäkerhet, man vill inte kunna omvandla alla datatyper till varandra utan att veta om det. Det är ett problem som finns i bland annat VB.