Hozzáteszi dinamikus mező a adathalmaz és a megnyitásakor

kivételt üzenetet nepravelny mező típusát:


F: = TIntegerField.Create (táblázat);
F.FieldKind: = fkData;
F.FieldName: = "ROW";
F.DataSet: = táblázat;
F.Name:="ROW „;

Mit csinálok rosszul?

Általában mit csinálsz, schachem első 5 sorban, vagy mi a következő sorban, ami a neve? Egy vonal esküszik.

Table.FieldDefs.Add (Név, ftInteger, 0, hamis);
->
Table.FieldDefs.Add (Név, ftString, 0, hamis);

Igen, ez a hálátlan feladat dinamikusan létrehozni elektrosztatikus mezők. Már a kezdet kezdetén - a hívás időpontjában Table.FieldDefs.Add (Név, ftInteger 0, hamis), akkor már van legalább egy statikus mező a tábla?

Nos, mint az Active = false, akkor nem

MySql: = TQuery.Create (FirstForm);
A MySql do
kezdődik
DatabaseName: = "CADR";
AutoCalcFields: = true;
OnCalcFields: = MyCalcFields;
A FieldDefs do
kezdődik
Add ( "telefon", ftFloat 0, true);
FieldDefs [0] .CreateField (MySql);

Add ( "FIO" ftString, 100, true);
FieldDefs [1] .CreateField (MySql);

Add ( "N_D" ftString, 100, true);
FieldDefs [2] .CreateField (MySql);

Add ( "L_of_S" ftString, 100, true);
FieldDefs [3] .CreateField (MySql);

Add ( "Megjegyzés", ftString, 100, true);
FieldDefs [4] .CreateField (MySql);

Add ( "típus", ftString, 100, true);
FieldDefs [5] .CreateField (MySql);

Add ( "DATA" ftDate 0, true);
FieldDefs [6] .CreateField (MySql);

Hozzá ( "ID", ftString, 15, true);
FieldDefs [7] .CreateField (MySql);

Add ( "VYDAN" ftString, 250, true);
FieldDefs [8] .CreateField (MySql);

Add ( "PLASE_WORK" ftString, 250, true);
FieldDefs [9] .CreateField (MySql);


Numer: = TIntegerField.Create (MySql);
A Numer do
kezdődik
FieldName: = "Numer";
Számított: = true;
DataSet: = MySql;
Név: = MySql.Name + FieldName;
MySql.FieldDefs.Add (Név, ftInteger 0, true);
végén;
végén;
végén;

Vovan (07.07.03 13:16)

Mivel ítélve a mező nevét (Name), ez a mező a string típusú.

Amennyire én látom - létrehoz kompanent, majd a fizikai tábla területén. Ha ez a tárgy mezőt (amely nem azonos), akkor is dinamikus. (Azaz ők akkor automatikusan létrejön, amikor megnyitja a Query).

Tehát tubya a Numer sor: = TIntegerField.Create (MySql);

És akkor dinamikusan létrehoz egy objektumot területen. (Ő lenne statikus, ha létrehozta a tervezési idő). Akkor ez kapcsolódik a Query. kiderül, hogy ha kinyitja a Query akkor mind a statikus (Number) és dinamikus objektum mezők, ami nem engedélyezett elmélethez. Leszármazottai TDataSeta működhet akár statikus vagy dinamikus objektum mezők!

Olvassa el a tudnivalókat a területen, és az objektum területeken.

Memória: 0,73 MB
Idő: 0.073 c

Kapcsolódó cikkek