Board index » cppbuilder » Error: "Type mismatch in expression"
csg
![]() CBuilder Developer |
Error: "Type mismatch in expression"2005-05-28 07:06:40 PM cppbuilder83 Hello, I receive an error: "Type mismatch in expression" during execution of the method: 'Update' in the following class: 'Problem.cpp' at the point: 'CFMSHDDatabase->Execute(SQLstmt, stmtParams, false, NULL);' :- //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Problem.h" #include "Interaction.h" #include "CFMSHDDataModule.h" #include "CFMSHDInput.h" //--------------------------------------------------------------------------- #pragma package(smart_init) void Problem::NumberSet(int aNumber) { number = aNumber; } int Problem::NumberGet() { return number; } void Problem::SummarySet(AnsiString aSummary) { summary = aSummary; } AnsiString Problem::SummaryGet() { return summary; } void Problem::DescriptionSet(AnsiString aDescription) { description = aDescription; } AnsiString Problem::DescriptionGet() { return description; } void Problem::ErrorMessageSet(AnsiString anErrorMessage) { errorMessage = anErrorMessage; } AnsiString Problem::ErrorMessageGet() { return errorMessage; } void Problem::PrioritySet(AnsiString aPriority) { priority = aPriority; } AnsiString Problem::PriorityGet() { return priority; } void Problem::ConsultantAllocatedSet(AnsiString aConsultantAllocated) { consultantAllocated = aConsultantAllocated; } AnsiString Problem::ConsultantAllocatedGet() { return consultantAllocated; } void Problem::InputDateSet(AnsiString anInputDate) { inputDate = anInputDate; } AnsiString Problem::InputDateGet() { return inputDate; } void Problem::InputTimeSet(AnsiString anInputTime) { inputTime = anInputTime; } AnsiString Problem::InputTimeGet() { return inputTime; } void Problem::Put() { TDatabase *CFMSHDDatabase = Session->OpenDatabase("Paradox CFMSHD"); TParams *stmtParams = new TParams(); AnsiString SQLstmt; try { CFMSHDDatabase->Connected = true; stmtParams->CreateParam(ftInteger,"NumberParam", ptInput); stmtParams->ParamByName("NumberParam")->AsInteger = number; stmtParams->CreateParam(ftString,"SummaryParam", ptInput); stmtParams->ParamByName("SummaryParam")->AsString = summary; stmtParams->CreateParam(ftMemo,"DescriptionParam", ptInput); stmtParams->ParamByName("DescriptionParam")->AsMemo = description; stmtParams->CreateParam(ftString,"ErrorMessageParam", ptInput); stmtParams->ParamByName("ErrorMessageParam")->AsString = errorMessage; stmtParams->CreateParam(ftString,"PriorityParam", ptInput); stmtParams->ParamByName("PriorityParam")->AsString = priority; stmtParams->CreateParam(ftString,"ConsultantAllocatedParam", ptInput); stmtParams->ParamByName("ConsultantAllocatedParam")->AsString = consultantAllocated; stmtParams->CreateParam(ftString,"InputDateParam", ptInput); stmtParams->ParamByName("InputDateParam")->AsString = inputDate; stmtParams->CreateParam(ftString,"InputTimeParam", ptInput); stmtParams->ParamByName("InputTimeParam")->AsString = inputTime; SQLstmt = "INSERT INTO Problem.DB "; SQLstmt += "(Number,Summary,Description,ErrorMessage,Priority,ConsultantAllocated,"; SQLstmt += "InputDate,InputTime) "; SQLstmt += "VALUES (:NumberParam,:SummaryParam,:DescriptionParam,:ErrorMessageParam,"; SQLstmt += ":PriorityParam,:ConsultantAllocatedParam,"; SQLstmt += ":InputDateParam,:InputTimeParam)"; CFMSHDDatabase->Execute(SQLstmt, stmtParams, false, NULL); CFMSHDDatabase->Session->Close(); } __finally { delete stmtParams; } } void Problem::Get() { } void Problem::Clear() { CFMSHDInputForm->Number->Clear(); CFMSHDInputForm->Summary->Clear(); //CFMSHDForm->Description->Clear(); //CFMSHDInputForm->ErrorMessage->Clear(); CFMSHDInputForm->Priority->Clear(); CFMSHDInputForm->ConsultantAllocated->Clear(); CFMSHDInputForm->InputDate->Clear(); CFMSHDInputForm->InputTime->Clear(); CFMSHDInputForm->TelephoneNumber->Clear(); } void Problem::New() { CFMSHDDataModuleForm->ProblemDataSource->DataSet->Open(); CFMSHDDataModuleForm->ProblemTable->Last(); NumberSet(CFMSHDDataModuleForm->ProblemTable->FieldByName("Number")->AsInteger); number++; CFMSHDInputForm->Number->Text = IntToStr(number); CFMSHDInputForm->InputDate->Text = DateToStr(Date()); CFMSHDInputForm->InputTime->Text = TimeToStr(Time()); CFMSHDInputForm->ConsultantAllocated->SetFocus(); CFMSHDDataModuleForm->ProblemDataSource->DataSet->Close(); } void Problem::Set() { NumberSet(StrToInt(CFMSHDInputForm->Number->Text)); if (CFMSHDInputForm->Summary->Text != "") SummarySet(CFMSHDInputForm->Summary->Text); else { MessageBox(NULL, "You must enter data in the Summary field", "Warning", MB_OK); CFMSHDInputForm->Summary->SetFocus(); } DescriptionSet(""); //CFMSHDInputForm->Description->Text); ErrorMessageSet(""); //CFMSHDInputForm->ErrorMessage->Text); if (CFMSHDInputForm->Priority->Text != "") PrioritySet(CFMSHDInputForm->Priority->Text); else { MessageBox(NULL, "You must enter data in the Priority field", "Warning", MB_OK); CFMSHDInputForm->Priority->SetFocus(); } if (CFMSHDInputForm->ConsultantAllocated->Text != "") ConsultantAllocatedSet(CFMSHDInputForm->ConsultantAllocated->Text); else { MessageBox(NULL, "You must enter data in the Consultant Allocated field", "Warning", MB_OK); CFMSHDInputForm->ConsultantAllocated->SetFocus(); } InputDateSet(CFMSHDInputForm->InputDate->Text); InputTimeSet(CFMSHDInputForm->InputTime->Text); } void Problem::GetLast() { CFMSHDDataModuleForm->ProblemDataSource->DataSet->Open(); CFMSHDDataModuleForm->ProblemTable->Last(); NumberSet(CFMSHDDataModuleForm->ProblemTable->FieldByName("Number")->AsInteger); CFMSHDForm->Number->Text = IntToStr(number); SummarySet(CFMSHDDataModuleForm->ProblemTable->FieldByName("Summary")->AsString); CFMSHDForm->Summary->Text = summary; DescriptionSet(CFMSHDDataModuleForm->ProblemTable->FieldByName("Description")->AsString); CFMSHDForm->Description->Text = description; ErrorMessageSet(CFMSHDDataModuleForm->ProblemTable->FieldByName("ErrorMessage")->AsString); CFMSHDForm->ErrorMessage->Text = errorMessage; PrioritySet(CFMSHDDataModuleForm->ProblemTable->FieldByName("Priority")->AsString); CFMSHDForm->Priority->Text = priority; ConsultantAllocatedSet(CFMSHDDataModuleForm->ProblemTable->FieldByName("ConsultantAllocated")->AsString); CFMSHDForm->ConsultantAllocated->Text = consultantAllocated; InputDateSet(CFMSHDDataModuleForm->ProblemTable->FieldByName("InputDate")->AsString); CFMSHDForm->InputDate->Text = inputDate; InputTimeSet(CFMSHDDataModuleForm->ProblemTable->FieldByName("InputTime")->AsString); CFMSHDForm->InputTime->Text = inputTime; CFMSHDDataModuleForm->ProblemDataSource->DataSet->Close(); } void Problem::Update() { TDatabase *CFMSHDDatabase = Session->OpenDatabase("Paradox CFMSHD"); TParams *stmtParams = new TParams(); String SQLstmt; try { CFMSHDDatabase->Connected = true; try { stmtParams->CreateParam(ftInteger, "NumberParam", ptInput); stmtParams->ParamByName("NumberParam")->AsInteger = number; } catch(EDatabaseError &e) { throw EDatabaseError(e.Message); } try { stmtParams->CreateParam(ftString, "SummaryParam", ptInput); stmtParams->ParamByName("SummaryParam")->AsString = summary; } catch(EDatabaseError &e) { throw EDatabaseError(e.Message); } try { stmtParams->CreateParam(ftMemo, "DescriptionParam", ptInput); stmtParams->ParamByName("DescriptionParam")->AsMemo = description; } catch(EDatabaseError &e) { throw EDatabaseError(e.Message); } try { stmtParams->CreateParam(ftString, "ErrorMessageParam", ptInput); stmtParams->ParamByName("ErrorMessageParam")->AsString = errorMessage; } catch(EDatabaseError &e) { throw EDatabaseError(e.Message); } try { stmtParams->CreateParam(ftString, "PriorityParam", ptInput); stmtParams->ParamByName("PriorityParam")->AsString = priority; } catch(EDatabaseError &e) { throw EDatabaseError(e.Message); } try { stmtParams->CreateParam(ftString, "ConsultantAllocatedParam", ptInput); stmtParams->ParamByName("ConsultantAllocatedParam")->AsString = consultantAllocated; } catch(EDatabaseError &e) { throw EDatabaseError(e.Message); } try { stmtParams->CreateParam(ftString, "InputDateParam", ptInput); stmtParams->ParamByName("InputDateParam")->AsString = inputDate; } catch(EDatabaseError &e) { throw EDatabaseError(e.Message); } try { stmtParams->CreateParam(ftString, "InputTimeParam", ptInput); stmtParams->ParamByName("InputTimeParam")->AsString = inputTime; } catch(EDatabaseError &e) { throw EDatabaseError(e.Message); } try { SQLstmt = "UPDATE Problem.DB SET"; SQLstmt += " Summary = :SummaryParam"; SQLstmt += ",Description = :DescriptionParam"; SQLstmt += ",ErrorMessage = :ErrorMessageParam"; SQLstmt += ",Priority = :PriorityParam"; SQLstmt += ",ConsultantAllocated = :ConsultantAllocatedParam"; SQLstmt += ",InputDate = :InputDateParam"; SQLstmt += ",InputTime = :InputTimeParam"; SQLstmt += " WHERE Number = :NumberParam"; } catch(EDatabaseError &e) { throw EDatabaseError(e.Message); } try { CFMSHDDatabase->Execute(SQLstmt, stmtParams, false, NULL); } // **** Fails here! ***** catch(EDatabaseError &e) { throw EDatabaseError(e.Message); } CFMSHDDatabase->Session->Close(); } __finally { delete stmtParams; } } void Problem::SetUpdate() { NumberSet(StrToInt(CFMSHDForm->Number->Text)); SummarySet(CFMSHDForm->Summary->Text); DescriptionSet(CFMSHDForm->Description->Text); ErrorMessageSet(CFMSHDForm->ErrorMessage->Text); PrioritySet(CFMSHDForm->Priority->Text); ConsultantAllocatedSet(CFMSHDForm->ConsultantAllocated->Text); InputDateSet(CFMSHDForm->InputDate->Text); InputTimeSet(CFMSHDForm->InputTime->Text); } **** Fails here! **** is the point of failure. I appreciate receiving assistance. I am using Borland C++ Builder 5 via Windows ME. I am calling method: 'Update' from class: 'Problem' via the Save button on Form: 'CFMSHDForm' as indicated by the code below:- void __fastcall TCFMSHDForm::SaveClick(TObject *Sender) { Problem *aProblem = new Problem; try { aProblem->SetUpdate(); aProblem->Update(); aProblem->Clear(); } __finally { delete aProblem; } The header: Problem.h is shown below:- //--------------------------------------------------------------------------- #ifndef ProblemH #define ProblemH //--------------------------------------------------------------------------- #endif class Problem { public: int number; AnsiString summary; AnsiString description; AnsiString errorMessage; AnsiString priority; AnsiString consultantAllocated; AnsiString inputDate; AnsiString inputTime; public: void NumberSet(int aNumber); int NumberGet(); void SummarySet(AnsiString aSummary); AnsiString SummaryGet(); void DescriptionSet(AnsiString aDescription); AnsiString DescriptionGet(); void ErrorMessageSet(AnsiString anErrorMessage); AnsiString ErrorMessageGet(); void PrioritySet(AnsiString aPriority); AnsiString PriorityGet(); void ConsultantAllocatedSet(AnsiString aConsultantAllocated); AnsiString ConsultantAllocatedGet(); void InputDateSet(AnsiString anInputDate); AnsiString InputDateGet(); void InputTimeSet(AnsiString anInputTime); AnsiString InputTimeGet(); void Put(); void Get(); void Clear(); void New(); void Set(); void GetLast(); void SetUpdate(); void Update(); }; Thanks. Regards, csg |