RAD Studio VCL Reference
|
Indicates the type of field whose value the parameter represents.
property DataType: TFieldType;
__property TFieldType DataType;
DataType is set automatically when a value is assigned to the parameter. Do not set DataType for bound fields, as that may cause the assigned value to be misinterpreted.
Read DataType to discover the type of data that was assigned to the parameter. Each possible value of DataType corresponds to a type of database field.
C++ Examples:
/* This example saves params from a ClientDataSet, alters them and restores them. */ TParams *SavedParams; void __fastcall TForm1::SaveParamsClick(TObject *Sender) { // Save the parameters for the TDataSet SavedParams->Assign(CDS->Params); } void __fastcall TForm1::AlterParamsClick(TObject *Sender) { CDS->Params->CreateParam(ftString, "stringParam", ptInput); // you can also edit the params in the CDS dynamically CDS->Params->CreateParam(ftSmallint, "smallIntParam", ptInput); CDS->Params->CreateParam(ftInteger, "intParam", ptInput); CDS->Params->CreateParam(ftWord, "wordParam", ptInput); CDS->Params->CreateParam(ftBoolean, "boolParam", ptInput); CDS->Params->CreateParam(ftFloat, "floatParam", ptInput); CDS->Params->CreateParam(ftCurrency, "currencyParam", ptInput); CDS->Params->CreateParam(ftBCD, "bcdParam", ptInput); CDS->Params->CreateParam(ftDate, "dateParam", ptInput); CDS->Params->CreateParam(ftTime, "timeParam", ptInput); CDS->Params->CreateParam(ftDateTime, "dateTimeParam", ptInput); // Call FetchParams to ensure parameters reflect server metadata CDS->FetchParams(); // with CDS->Params do for (int I = 0; I < CDS->Params->Count; I++) { AnsiString ListItem = ListBox1->Items->Strings[I]; switch (CDS->Params->Items[I]->DataType) { case ftString: CDS->Params->Items[I]->AsString = ListItem; break; case ftSmallint: CDS->Params->Items[I]->AsSmallInt = StrToIntDef(ListItem, 0); break; case ftInteger: CDS->Params->Items[I]->AsInteger = StrToIntDef(ListItem, 0); break; case ftWord: CDS->Params->Items[I]->AsWord = StrToIntDef(ListItem, 0); break; case ftBoolean: CDS->Params->Items[I]->AsBoolean = (ListItem == "True"); break; case ftFloat: CDS->Params->Items[I]->AsFloat = StrToFloat(ListItem); break; case ftCurrency: CDS->Params->Items[I]->AsCurrency = double(StrToFloat(ListItem)); break; case ftBCD: CDS->Params->Items[I]->AsBCD = StrToCurr(ListItem); break; case ftDate: CDS->Params->Items[I]->AsDate = StrToDate(ListItem); break; case ftTime: CDS->Params->Items[I]->AsTime = StrToTime(ListItem); break; case ftDateTime: CDS->Params->Items[I]->AsDateTime = StrToDateTime(ListItem); break; } } } void __fastcall TForm1::RestoreParamsClick(TObject *Sender) { // Restore the parameters to TDataSet CDS->Params->AssignValues(SavedParams); } void __fastcall TForm1::FormCreate(TObject *Sender) { // Initialize SavedParams SavedParams = new TParams; ListBox1->Items->Add("Here is a string"); ListBox1->Items->Add("4"); ListBox1->Items->Add("3456789"); ListBox1->Items->Add("34"); ListBox1->Items->Add("0"); ListBox1->Items->Add("12.56"); ListBox1->Items->Add("4.23"); ListBox1->Items->Add("99.5"); ListBox1->Items->Add("4/12/53"); ListBox1->Items->Add("7:45:00"); ListBox1->Items->Add("4/12/53 7:45:00"); }
/* This example requires a TClientDataSet and a button on a form. */ void __fastcall TForm1::Button1Click(TObject *Sender) { for (int I = 0; I < CDS->Params->Count; I++) { if (CDS->Params->Items[I]->IsNull && CDS->Params->Items[I]->DataType == ftInteger) CDS->Params->Items[I]->AsInteger = -1; }} void __fastcall TForm1::FormCreate(TObject *Sender) { CDS->LoadFromFile(GetCurrentDir() + L"/../CDS.XML"); CDS->Params->CreateParam(ftInteger, "StateParam", ptInput); CDS->Params->CreateParam(ftInteger, "MyParam", ptInput); }
Delphi Examples:
{ This example uses the FetchParams method to sync the params with the server. } procedure TForm1.SaveParamsClick(Sender: TObject); begin { Save the parameters for the TDataSet } SavedParams.Assign(CDS.Params); end; procedure TForm1.AlterParamsClick(Sender: TObject); var I : Integer; ListItem: string; begin CDS.Params.CreateParam(ftString, 'stringParam', ptInput); // you can also edit the params in the CDS dynamically CDS.Params.CreateParam(ftSmallInt, 'smallIntParam', ptInput); CDS.Params.CreateParam(ftInteger, 'intParam', ptInput); CDS.Params.CreateParam(ftWord, 'wordParam', ptInput); CDS.Params.CreateParam(ftBoolean, 'boolParam', ptInput); CDS.Params.CreateParam(ftFloat, 'floatParam', ptInput); CDS.Params.CreateParam(ftCurrency, 'currencyParam', ptInput); CDS.Params.CreateParam(ftBCD, 'bcdParam', ptInput); CDS.Params.CreateParam(ftDate, 'dateParam', ptInput); CDS.Params.CreateParam(ftTime, 'timeParam', ptInput); CDS.Params.CreateParam(ftDateTime, 'dateTimeParam', ptInput); { Call FetchParams to ensure parameters reflect server metadata } CDS.FetchParams; with CDS.Params do begin for I := 0 to Count - 1 do begin ListItem := ListBox1.Items[I]; case Items[I].DataType of ftString: Items[I].AsString := ListItem; ftSmallInt: Items[I].AsSmallInt := StrToIntDef(ListItem, 0); ftInteger: Items[I].AsInteger := StrToIntDef(ListItem, 0); ftWord: Items[I].AsWord := StrToIntDef(ListItem, 0); ftBoolean: begin if ListItem = 'True' then Items[I].AsBoolean := True else Items[I].AsBoolean := False; end; ftFloat: Items[I].AsFloat := StrToFloat(ListItem); ftCurrency: Items[I].AsCurrency := StrToFloat(ListItem); ftBCD: Items[I].AsBCD := StrToCurr(ListItem); ftDate: Items[I].AsDate := StrToDate(ListItem); ftTime: Items[I].AsTime := StrToTime(ListItem); ftDateTime: Items[I].AsDateTime := StrToDateTime(ListItem); end; end; end; end; procedure TForm1.RestoreParamsClick(Sender: TObject); begin { Restore the parameters to TDataSet } CDS.Params.AssignValues(SavedParams); end; procedure TForm1.FormCreate(Sender: TObject); begin { Initialize SavedParams } SavedParams := TParams.Create; ListBox1.Items.Add('Here is a string'); ListBox1.Items.Add('4'); ListBox1.Items.Add('3456789'); ListBox1.Items.Add('34'); ListBox1.Items.Add('0'); ListBox1.Items.Add('12.56'); ListBox1.Items.Add('4.23'); ListBox1.Items.Add('99.5'); ListBox1.Items.Add('4/12/53'); ListBox1.Items.Add('7:45:00'); ListBox1.Items.Add('4/12/53 7:45:00'); end; procedure TForm1.FormDestroy(Sender: TObject); begin SavedParams.Free; end;
{ This example fills in the parameters of a client dataset from the entries of a list box. } procedure TForm1.Button4Click(Sender: TObject); var I: Integer; ListItem: string; begin { Call FetchParams to ensure parameters reflect server metadata } ClientDataSet1.FetchParams; with ClientDataSet1.Params do begin for I := 0 to Count - 1 do begin ListItem := ListBox1.Items[I]; case Items[I].DataType of ftString: Items[I].AsString := ListItem; ftSmallInt: Items[I].AsSmallInt := StrToIntDef(ListItem, 0); ftInteger: Items[I].AsInteger := StrToIntDef(ListItem, 0); ftWord: Items[I].AsWord := StrToIntDef(ListItem, 0); ftBoolean: begin if ListItem = 'True' then Items[I].AsBoolean := True else Items[I].AsBoolean := False; end; ftFloat: Items[I].AsFloat := StrToFloat(ListItem); ftCurrency: Items[I].AsCurrency := StrToFloat(ListItem); ftBCD: Items[I].AsBCD := StrToCurr(ListItem); ftDate: Items[I].AsDate := StrToDate(ListItem); ftTime: Items[I].AsTime := StrToTime(ListItem); ftDateTime: Items[I].AsDateTime := StrToDateTime(ListItem); end; end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin ListBox1.Items.Add('Here is a string'); ListBox1.Items.Add('4'); ListBox1.Items.Add('3456789'); ListBox1.Items.Add('34'); ListBox1.Items.Add('0'); ListBox1.Items.Add('12.56'); ListBox1.Items.Add('4.23'); ListBox1.Items.Add('99.5'); ListBox1.Items.Add('4/12/53'); ListBox1.Items.Add('7:45:00'); ListBox1.Items.Add('4/12/53 7:45:00'); end;
{ This example requires a TClientDataSet and a button on a form. } {$IFNDEF UNICODE} uses SwSystem; {$ENDIF} procedure TForm1.Button1Click(Sender: TObject); var I : Integer; begin { Assign -1 to any integer parameter which does not have a value. } for I := 0 to CDS.Params.Count - 1 do if (CDS.Params.Items[I].IsNull) and (CDS.Params.Items[I].DataType = ftInteger) then { Items is the default property, so you can omit its name } CDS.Params[I].AsInteger := -1; end; procedure TForm1.FormCreate(Sender: TObject); begin {$IFDEF UNICODE} CDS.LoadFromFile(GetCurrentDir + '\CDS.XML'); {$ELSE} CDS.LoadFromFile(gsAppPath + 'CDS.XML'); {$ENDIF} CDS.Params.CreateParam(ftInteger, 'StateParam', ptInput); CDS.Params.CreateParam(ftInteger, 'MyParam', ptInput); end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|