[DUG] Creating fields at runtime

Todd Martin toddm at kol.co.nz
Wed Jun 1 14:00:34 NZST 2005


I see there's more than one way to skin the cat.

----- Original Message ----- 
From: "Alister Christie" <alister at salespartner.co.nz>
To: "NZ Borland Developers Group - Delphi List" <delphi at ns3.123.co.nz>
Sent: Wednesday, June 01, 2005 11:51 AM
Subject: Re: [DUG] Creating fields at runtime


> For those interested in a solution:
> 
>   q := TQuery.Create(Nil);
>   try
>     q.DatabaseName := 'Rezy';
>     q.SQL.Add('Select Surname, Tit_Init, Greeting, StNo, Street, Add2, 
> Add3, Ph1, Ph1Type, Ph2, Ph2Type, Ph3, Ph3Type, Fax, Price, Bedrooms, 
> email, LookingFor');
>     q.SQL.Add('from contact where status = ''A''');
>     q.Name := 'Contact';
>     q.Open;  //fill fielddefs
>     q.Close;
>     for i := 0 to pred(q.FieldDefs.Count) do
>       q.FieldDefs[i].CreateField(q);
>     strfield := TStringField.Create(q);
>     strfield.FieldKind := fkCalculated;
>     strfield.FieldName := 'RequirementsDesc';
>     strfield.Size := 200;
>     strfield.DataSet := q;
> 
> 
>     q.OnCalcFields := qContactCalcField;
>     q.Open;
> 
> ....
> 
> Open and Close needs to be called to fill the fielddefs property.  This 
> is probably similar to what the IDE does to add fields in the fields 
> editor.  I hope someone else finds this useful.
> 
> 
> Alister Christie
> Computers for People
> Ph: 04 471 1849 Fax: 04 471 1266
> http://www.salespartner.co.nz
> PO Box 13085
> Johnsonville
> Wellington
> 
> 
> Alister Christie wrote:
>> No it's created at runtime:
>> 
>>   q := TQuery.Create(Nil);
>>     q.DatabaseName := 'Rezy';
>>     q.SQL.Add('Select Surname, Tit_Init, Greeting, StNo, Street, Add2, 
>> Add3, Ph1, Ph1Type, Ph2, Ph2Type, Ph3, Ph3Type, Fax, Price, Bedrooms, 
>> email');
>>     q.SQL.Add('from contact where status = ''A''');
>>     q.Name := 'Contact';
>> //    q.OnCalcFields := qContactCalcField;
>> //    strfield := TStringField.Create(q);
>> //    strfield.FieldName := 'RequirementsDesc';
>> //    strfield.FieldKind := fkCalculated;
>> //    strfield.DataSet := q;
>>     q.Open;
>> 
>> The commented out bit creates the calculated field which obscures the 
>> other fields once created.  I want to be able to add all the other 
>> fields to the q.Fields property, but not have to write the code to add 
>> each field individually.
>> 
>> Any Suggestions?
>> 
>> Alister Christie
>> Computers for People
>> Ph: 04 471 1849 Fax: 04 471 1266
>> http://www.salespartner.co.nz
>> PO Box 13085
>> Johnsonville
>> Wellington
>> 
>> Todd Martin wrote:
>> 
>>> Are your existing fields in the dataset create at design time?
>>>
>>> ----- Original Message ----- From: "Alister Christie" 
>>> <alister at salespartner.co.nz>
>>> To: "NZ Borland Developers Group - Delphi List" <delphi at ns3.123.co.nz>
>>> Sent: Tuesday, May 31, 2005 1:29 PM
>>> Subject: [DUG] Creating fields at runtime
>>>
>>>
>>>> I'm creating a TQuery (descriptively called q) at runtime with a with 
>>>> a query such as "select * from contact".  However I want to add a 
>>>> calculated field to this using the following code
>>>>     strfield := TStringField.Create(q);
>>>>     strfield.FieldName := 'RequirementsDesc';
>>>>     strfield.FieldKind := fkCalculated;
>>>>     strfield.DataSet := q;
>>>> However, by adding a calculated field I hide all the fields in the 
>>>> fielddefs.  Does anyone know of a way around this, either by putting 
>>>> the calculated field in q.fielddefs or adding all the fields to 
>>>> q.fields in some easy fashion
>>>>
>>>>
>>>> -- 
>>>> Alister Christie
>>>> Computers for People
>>>> Ph: 04 471 1849 Fax: 04 471 1266
>>>> http://www.salespartner.co.nz
>>>> PO Box 13085
>>>> Johnsonville
>>>> Wellington
>>>> _______________________________________________
>>>> Delphi mailing list
>>>> Delphi at ns3.123.co.nz
>>>> http://ns3.123.co.nz/mailman/listinfo/delphi
>>>>
>>>>
>>>
>>>
>> _______________________________________________
>> Delphi mailing list
>> Delphi at ns3.123.co.nz
>> http://ns3.123.co.nz/mailman/listinfo/delphi
>> 
>> 
> _______________________________________________
> Delphi mailing list
> Delphi at ns3.123.co.nz
> http://ns3.123.co.nz/mailman/listinfo/delphi
> 
>


-- 
Internal Virus Database is out-of-date.
Checked by AVG Anti-Virus.
Version: 7.0.322 / Virus Database: 266.11.15 - Release Date: 22/05/2005



More information about the Delphi mailing list