Rohit This is interesting, obviously the query 'prepare' and the open/ close cycle on the table read enough metadata for you to regen the Fields
N ----- Original Message ----- From: "Rohit Gupta" <[EMAIL PROTECTED]> To: "Multiple recipients of list delphi" <[EMAIL PROTECTED]> Sent: Monday, June 16, 2003 10:30 AM Subject: Re: [DUG]: Adding Calculated Field > Neven, > > I have actually got it working... the critical bit (which is why it didnt > work before) was the sequence and the fact that you have to create > all the fields. > > for qry > > prepare > fielddefs.update > create the new fielddef > create all fields from fielddefs > modify own field to make calculated > open > > for tbl > > open > close > fielddefs.update > create the new fielddef > create all fields from fielddefs > modify own field to make calculated > open > > To: Multiple recipients of list delphi > <[EMAIL PROTECTED]> > Send reply to: [EMAIL PROTECTED] > From: "Neven MacEwan" <[EMAIL PROTECTED]> > Subject: Re: [DUG]: Adding Calculated Field > Date sent: Fri, 13 Jun 2003 13:46:03 +1200 > > > Rohit > > > > To Create a single field you have to create all the fields, so you > > can either use the IDE to create a persistant field defs as per your query > > (I used to hate this in d5 because if a field changed in size the whole > > thing would spit) > > and then before you open the table programtically create your calc field > > (as per the link I posted) or in your case as the query is dynamic you have > > to > > make all the fielddefs to match your query (see sample code below) > > > > The biggest problem with this is getting the metadata for the Field you > > need to create (I manage this with a 'MetaEntity') but I'm sure you can come > > up with > > a solution. > > > > Does this make sense? > > > > Neven > > > > > > procedure TmwkMemTable.MakeFields(var Fields: TmwkStringArray); > > var > > i: integer; > > Field: TField; > > FieldClass: TFieldClass; > > FieldType: TFieldType; > > MetaColumn: TmwkMetaColumn; > > begin > > Self.FieldDefs.Clear; > > Self.Fields.Clear; > > for i := low(Fields) to high(Fields) do > > begin > > MetaColumn := MetaEntity.ColumnByName(Fields[i]); > > if MetaColumn = nil then Continue; > > FieldType := MetaColumn.FieldType; > > FieldClass := Self.GetFieldClass(FieldType); > > if not assigned(FieldClass) then begin > > Fields[i] := ''; > > continue; > > end; > > Field := FieldClass.Create(Self); > > if not assigned(Field) then break; > > Field.FieldName := Fields[i]; > > Field.FieldKind := fkData; > > if MetaColumn.DataSize <> 0 then Field.Size := MetaColumn.DataSize; > > Field.DataSet := Self; > > Field.Name := Self.Name+Field.FieldName; > > Self.FieldDefs.Add(Field.Name,FieldType,MetaColumn.DataSize,False); > > end; > > end; > > > > ----- Original Message ----- > > From: "Rohit Gupta" <[EMAIL PROTECTED]> > > To: "Multiple recipients of list delphi" <[EMAIL PROTECTED]> > > Sent: Friday, June 13, 2003 12:16 PM > > Subject: Re: [DUG]: Adding Calculated Field > > > > > > > I did some web searches and found scores of people with the same > > > problem.... some with an identical requirement to me. Amidst the > > > hundreds of rplies, I think I have a solution - I am about to create a > > > test app. > > > > > > To: Multiple recipients of list delphi > > > <[EMAIL PROTECTED]> > > > Send reply to: [EMAIL PROTECTED] > > > From: "Nello Sestini" <[EMAIL PROTECTED]> > > > Subject: Re: [DUG]: Adding Calculated Field > > > Date sent: Fri, 13 Jun 2003 06:50:20 +0700 > > > > > > > if you aren't using persistent fields then ISTR you can't > > > > define calculated fields. > > > > > > > > is it possible to pre-define a few of these calculated > > > > checkboxes (all handled by the same handler) and alter > > > > their grid visibility on the fly instead of creating them? > > > > > > > > (i don't completely understand your problem so this may > > > > be a miss) > > > > > > > > > > > > -ns > > > > http://www.roserox.co.th > > > > > > > > ----- Original Message ----- > > > > From: "Rohit Gupta" <[EMAIL PROTECTED]> > > > > To: "Multiple recipients of list delphi" <[EMAIL PROTECTED]> > > > > Sent: Friday, June 13, 2003 04:36 > > > > Subject: Re: [DUG]: Adding Calculated Field > > > > > > > > > > > > > Any other suggestions.. I am really stuck here... > > > > > > > > > > > > > > > PROBLEM > > > > > > > > > > The only solution I have is to use a calculated field at run-time. I > > cant > > > > define > > > > > persistent fields as the query changes depending on user input. The > > list > > > > from the qry > > > > > gets displayed and the user needs to deselect some rows. > > > > > > > > > > If I have a calculated field linked to a checkbox - then when he > > presses > > > > space or dbl- > > > > > clicks on that column, I can fire a separate qry to record this in an > > > > exclusion table.... > > > > > and because its a calculated field I can refresh the display to give > > him > > > > immediate > > > > > feedback. if the exclusion table was joined to the query then I would > > > > have to refresh > > > > > the query which can take several minutes I would not be able to > > provide > > > > immediate > > > > > feedback. > > > > > > > > > > The only other soultion would have been multiple inserts from an sql > > > > statement - but > > > > > that is not supported. Then I could have populated an inclusion table > > > > instead. > > > > > > > > > > > How do I go about adding a calculated field to a dataset/grid at > > > > run-time ? I > > > > > > have tried various things - none of them work > > > > > > > > > > > > fielddefs.add > > > > > > fielddefs.addfielddef > > > > > > fields.add > > > > > > Regards > > > Regards > > > > > Regards > > Rohit > > ==================================================== > ================== > CFL - Computer Fanatics Ltd. 21 Barry's Point Road, AKL, New > Zealand > PH (649) 489-2280 > FX (649) 489-2290 > email [EMAIL PROTECTED] or [EMAIL PROTECTED] > ==================================================== > ================== > > -------------------------------------------------------------------------- - > New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] > Website: http://www.delphi.org.nz > To UnSub, send email to: [EMAIL PROTECTED] > with body of "unsubscribe delphi" > Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/ > > --------------------------------------------------------------------------- New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] Website: http://www.delphi.org.nz To UnSub, send email to: [EMAIL PROTECTED] with body of "unsubscribe delphi" Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/