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