Koden nedanför skall hämta data ur en databas. Alla datyper i basen är av typen integer. Får här ett felmeddelande som lyder "Typblandningsfel i villkorssats". Hittade en möjlig lösning men hur använder jag fler villkor i samam sträng? Jag hittade lösningen...Typblandningsfel???
Vad jag hört så tar nite SQL strängar annat än strängar i villkoret!? Därav min konvertering i koden nedanför.
Vad är fel?
Tack på förhand, Peter
int CRegNewCustomerDlg::GetRate(int &intIDRoom,int &intINRC,CString &strSCC)
{
//Dekl. av variabler för att typa om integers till chars då SQL inte tar taltyper
char strIDR[10];
char strINRC[10];
//Konvertering
itoa(intIDRoom,strIDR,10);
itoa(intINRC,strINRC,10);
//Dekl. av variabler som tar över värdet från char till CString. SQL tar inte chartyper
CString strIDRoom = strIDR;
CString strIDINRC = strINRC;
int intRate;
m_strSQL7 = _T("SELECT Rates.Rate FROM Rates WHERE Rates.IDRoom = '" + strIDRoom + "' AND Rates.IDINRC = '" + strIDINRC + "' AND Rates.IDORC = '" + strSCC + "'");
try
{
//Recordset för Rates
m_pADODB7.CreateInstance(__uuidof(Recordset));
m_pADODB7->Open((LPCTSTR)m_strSQL7,(LPCTSTR)m_strConnection,adOpenDynamic,adLockOptimistic,adCmdText);
if(FAILED(m_pADODB7->QueryInterface(__uuidof(IADORecordBinding),(LPVOID *) &m_pADORS7)))
{
_com_issue_error(E_NOINTERFACE);
}
m_pADORS7->BindToRecordset(&CheckRateRS);
if(adFldOK==CheckRateRS.lIDRateStatus)
{
intRate = CheckRateRS.m_IDRate;
}
}
catch(_com_error &e)
{
GenerateError(e.Error(),e.Description());
}
return intRate;
}Sv: Typblandningsfel???
Min gamla SQL:::
m_strSQL7 = _T("SELECT Rates.Rate FROM Rates WHERE Rates.IDRoom = '" + strIDRoom + "' AND Rates.IDINRC = '" + strIDINRC + "' AND Rates.IDORC = '" + strSCC + "'");
Min nya SQL som jag vill bygga ut med fler villkor än ett... Hur gör jag det?
m_strSQL7.Format("SELECT Rates.Rate FROM Rates WHERE Rates.IDRoom = %d", intIDRoom);
PeterSv: Typblandningsfel???
m_strSQL7.Format("SELECT Rates.Rate FROM Rates WHERE Rates.IDRoom = %d AND Rates.IDINRC = %d AND Rates.IDORC = %d", intIDRoom, intINRC, intSCC);
...så skall det vara. Ganska logiskt faktiskt!!!!