Jag har ett irriterande fel jag gärna vill ha hjälp med. Jag har löst detta tillsvidare med att köra med datatypen char istället för med float men det borde väl gå att på något sätt behålla den ursprungliga datatypen? Har inte alls satt mig in i problematiken, men du säger att du bara kan få fram "vetenskaplig notation". I det fallet har du ju rätt datatyp, men du har fel presentation av datat. Det finns ju metoder för att lösa det... Niklas, Du måste köra med CString, va? Kontrollerna i UI har jag gjort om till CString för att få det att funka med CHAR i headern. Tidigare hade jag ju float även här och float i headern men jag får inte ihop det då. Databasen levererar ett flyttal men jag kan alltså inte jobba med det hela vägen fram till UI utan måste lägga om till char i header och sedan till CString i UI.VC++ (flyttalshjälp med data ur recordset)
Felet i klarspråk är att jag inte kan få ut flyttal från recordset till mitt formulär och kontroller som skall presentera flyttalsdata.
Strängar och heltal går bra men inte flyttalen. Förmodligen ligger felet i klassen SearchGuestBookingdata.h och jag har, som jag förstått hjälpen MSDN, försökt enligt deras exempel men icke. Mitt fel kvarstår.
Allt jag får ut av operationen är antingen vetenskapliga tal (Tal med e-notation) eller bara ingenting. Kanske även en hel nolla ibland.
Någon som jobbat med detta tidigare kanske förstår mitt problem och kan ge mig tips?
Jag postar delar av koden här nedanför...
//Klassen SearchGuestBooking.h
#include "icrsint.h"
class CSearchGuestBooking : public CADORecordBinding
{
BEGIN_ADO_BINDING (CSearchGuestBooking)
ADO_FIXED_LENGTH_ENTRY (1, adInteger, m_IDGuest, lIDGuestStatus, FALSE)
ADO_VARIABLE_LENGTH_ENTRY2 (2, adVarChar, m_sFirstName, sizeof(m_sFirstName),lIDFirstNameStatus, TRUE)
ADO_FIXED_LENGTH_ENTRY (3, adInteger,m_iNrOfNights, lIDNrOfNightsStatus, TRUE)
//Denna raden felar tror jag men kan inte hitta vad jag gör fel.
ADO_NUMERIC_ENTRY (4, adDecimal,m_fltPricePerNight, m_Prec, m_Scale, lIDPricePerNightStatus, TRUE)
END_ADO_BINDING()
public:
CSearchGuestBooking();
virtual ~CSearchGuestBooking();
LONG m_IDGuest;
ULONG lIDGuestStatus;
CHAR m_sFirstName[50];
ULONG lIDFirstNameStatus;
FLOAT m_fltPricePerNight;
BYTE m_Prec;
BYTE m_Scale;
ULONG lIDPricePerNightStatus;
};
//Implementationsfilen SearchGuestBookingDlg.cpp
void CAmbiEditBookingDlg::dbConnect()
{
//START på databasanslutning *****
m_strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = databasfil.mdb");
m_strSQL = _T("SELECT Guest.IDGuest,Guest.FirstName,Booking.PricePerNight FROM Guest,Booking WHERE Guest.IDGuest = Booking.IDGuest AND Booking.IDBooking = 1");
m_pADODB = NULL;
m_pADORS = NULL;
::CoInitialize(NULL);
try
{
m_pADODB.CreateInstance(__uuidof(Recordset));
m_pADODB->Open((LPCTSTR)m_strSQL,(LPCTSTR)m_strConnection,adOpenDynamic,adLockOptimistic,adCmdText);
if(FAILED(m_pADODB->QueryInterface(__uuidof(IADORecordBinding),(LPVOID *) &m_pADORS)))
{
_com_issue_error(E_NOINTERFACE);
}
m_pADORS->BindToRecordset(&SearchGuestBookingRS);
}
catch(_com_error &e)
{
GenerateError(e.Error(),e.Description());
}
//SLUT på databasanslutning *****
}
//Metoden som hämtar data ur recordset och lägger data till formulärets medlemsvariabler
void CAmbiEditBookingDlg::Show()
{
if(adFldOK==SearchGuestBookingRS.lIDFirstNameStatus)
m_strFirstName = SearchGuestBookingRS.m_sFirstName;
else
m_strFirstName = "";
if(adFldOK==SearchGuestBookingRS.lIDPricePerNightStatus)
m_fltPricePerNight = SearchGuestBookingRS.m_fltPricePerNight;
else
m_fltPricePerNight = 0;
m_pADODB->Close();
m_pADORS->Release();
UpdateData(FALSE);
}Sv: VC++ (flyttalshjälp med data ur recordset)
Någon som kan sprida ljus kring detta mottages tacksamt.Sv: VC++ (flyttalshjälp med data ur recordset)
Sv: VC++ (flyttalshjälp med data ur recordset)
Vet du med vilka metoder? Vet du hur jag kan gå till väga? Jag har försökt med vad MSDN förslår men det är väl något som fattas mitt förstånd för att jag skall få det att funka.Sv: VC++ (flyttalshjälp med data ur recordset)
Då kan jag inte exakt hur det går till, men först: är du säker på att du får ut rätt tal, men med fel formattering?Sv: VC++ (flyttalshjälp med data ur recordset)
Onödigt krångligt, eller hur!?