Adaugă un câmp dinamic în setul de date și atunci când îl deschideți

excepție cu un mesaj despre tipul de câmp nepravelny:


F: = TIntegerField.Create (Tabel);
F.FieldKind: = fkData;
F.FieldName: = "ROW";
F.DataSet: = masa;
F.Name:="ROW „;

Ce fac greșit?

În general, ce faci, schachem primele 5 rânduri, sau ceea ce linia următoare, care este numele? Într-o linie de injuriile.

Table.FieldDefs.Add (Nume, ftInteger, 0, fals);
->
Table.FieldDefs.Add (Nume, ftString, 0, fals);

Da, de locuri de muncă ingrată a crea dinamic câmpuri statice. Pentru un start - la momentul Table.FieldDefs.Add apelului (nume, ftInteger, 0, fals), aveți deja cel puțin un câmp static pentru masă?

Ei bine, ca activ = fals atunci nu

MySql: = TQuery.Create (FirstForm);
cu MySql do
începe
Databasename: = "cadr";
AutoCalcFields: = true;
OnCalcFields: = MyCalcFields;
cu FieldDefs do
începe
Adăugați ( "telefon", ftFloat, 0, true);
FieldDefs [0] .CreateField (MySql);

Adăugați ( "FIO", ftString, 100, true);
FieldDefs [1] .CreateField (MySql);

Adăugați ( "N_D", ftString, 100, true);
FieldDefs [2] .CreateField (MySql);

Adăugați ( "L_of_S", ftString, 100, true);
FieldDefs [3] .CreateField (MySql);

Adăugați ( "NOTĂ", ftString, 100, true);
FieldDefs [4] .CreateField (MySql);

Adăugați ( "TIP", ftString, 100, true);
FieldDefs [5] .CreateField (MySql);

Adăugați ( "DATA", ftDate, 0, true);
FieldDefs [6] .CreateField (MySql);

Adauga ( "ID-ul", ftString, 15, adevărat);
FieldDefs [7] .CreateField (MySql);

Adăugați ( "VYDAN", ftString, 250, true);
FieldDefs [8] .CreateField (MySql);

Adăugați ( "PLASE_WORK", ftString, 250, true);
FieldDefs [9] .CreateField (MySql);


Numer: = TIntegerField.Create (MySql);
cu Numer do
începe
Numele_campului: = "Numer";
Calculat: = Adevărat;
DataSet: = MySql;
Nume: = MySql.Name + numele_campului;
MySql.FieldDefs.Add (Nume, ftInteger, 0, true);
se încheie;
se încheie;
se încheie;

Vovan (07.07.03 13:16)

Pentru că judecând după numele câmpului (Name), acesta este un câmp de tip șir.

Din câte văd eu - creați kompanent, și apoi câmpul de masă fizic. Atunci când acest obiect câmpurile lui (care nu este același lucru) va fi dinamic. (Adică ei nu-i vor fi create în mod automat atunci când deschideți interogării.)

Deci tubya la linia Numer: = TIntegerField.Create (MySql);

Și apoi creați un câmp dinamic obiect. (El ar fi static, dacă l-ați creat la ora de proiectare). Apoi, va este atașat la interogare. se dovedește că, atunci când deschideți interogarea va avea atât statice (număr) și câmpuri dinamice ale obiectului, care nu este permis de teorie. Descendenții TDataSeta poate lucra fie cu câmpuri obiect static sau dinamic lui!

Citiți tutorial despre câmpul și câmpurile obiectului.

Memorie: 0.73 MB
Timpul: 0,073 c

articole similare