Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.01;
Скачать: CL | DM;

Вниз

AppendRecord массивом   Найти похожие ветки 

 
serp   (2007-04-03 17:22) [0]

Нужно сначало записать данные в массив, а потом одной строчкой с AppendRecord загнать в базу.
Можно так?
Делаю так:
A: Variant;
A := VarArrayCreate([0, OraQuery1.Fields.Count], varVariant);
while not OraQuery1.Eof do begin
for i:=0 to OraQuery1.FieldDefs.Count-1 do begin
 A[i]:=OraQuery1.FieldByName(OraQuery1.FieldDefs.Items[i].Name).AsVariant;
end;
ADOTable1.AppendRecord([A]);
........


"Invalid variant type conversion"
???


 
Johnmen ©   (2007-04-03 21:25) [1]

A : array of TVarRec;
SetLength(A,OraQuery1.Fields.Count);
while ...
...
ADOTable1.AppendRecord(A);


 
Sergey13 ©   (2007-04-04 08:38) [2]

> [0] serp   (03.04.07 17:22)

А почему не просто
Insert into Select from
?
Зачем на клиента тащить, только что бы вставить?


 
serp   (2007-04-04 08:51) [3]

Спасибо!


> Sergey13 ©   (04.04.07 08:38) [2]

База на Oracle записывается в DBF (FoxBase). Из оракла данные вытягиваются в нужной форме запросом и 1 к одному заливаются в DBF.
Как тут "Insert into Select from"? я не догоняю...


> Johnmen ©   (03.04.07 21:25) [1]

Я с этого кода начинал. Но уперся в то, что на
это A[i]:=OraQuery1.FieldByName(OraQuery1.FieldDefs.Items[i].Name).AsVariant;
при A : array of TVarRec;
начинается " Incompatible types: "TVarRec" and "Variant" ".......

Не подскажите... ?


 
Sergey13 ©   (2007-04-04 08:55) [4]

> [3] serp   (04.04.07 08:51)

Я просто не въехал про 2 СУБД. Но в принципе можно, если дбф-ку подлинковать к ораклу. Вроде такое возможно через ОДБС. Подробностей не скажу - сам не пользовался.


 
serp   (2007-04-04 08:57) [5]

К ораклу коннекчусь без клиента ODAC.
К DBF через Jet 4, ADO.
Так что анрил....


 
Jan1   (2007-04-04 10:14) [6]


> К ораклу коннекчусь без клиента ODAC.
> К DBF через Jet 4, ADO.
> Так что анрил....

анрил чего? линкед создается на сервере.


 
serp   (2007-04-04 10:30) [7]

>> анрил чего? линкед создается на сервере.
Ладно.. кто знает, тот поймет.. я не понял.

Вопрос:

Как загнать в A значения?

A : array of TVarRec;
A[i]:=OraQuery1.FieldByName(OraQuery1.FieldDefs.Items[i].Name).AsVariant;
не так. а как?


 
serp   (2007-04-04 10:31) [8]

type
 PVarRec = ^TVarRec;
 TVarRec = record
   case Byte of
     vtInteger:    (VInteger: Integer; VType: Byte);
     vtBoolean:    (VBoolean: Boolean);
     vtChar:      (VChar: Char);
     vtExtended:  (VExtended: PExtended);
     vtString:    (VString: PShortString);
     vtPointer:    (VPointer: Pointer);
     vtPChar:      (VPChar: PChar);
     vtObject:    (VObject: TObject);
     vtClass:      (VClass: TClass);
     vtWideChar:  (VWideChar: WideChar);
     vtPWideChar:  (VPWideChar: PWideChar);
     vtAnsiString: (VAnsiString: Pointer);
     vtCurrency:  (VCurrency: PCurrency);
     vtVariant:    (VVariant: PVariant);
     vtInterface:  (VInterface: Pointer);
     vtWideString: (VWideString: Pointer);
     vtInt64:      (VInt64: PInt64);
end;


 
Jan1   (2007-04-04 10:33) [9]

Зачем тебе Appendrecord? Заюзай Insert и Post


 
serp   (2007-04-04 10:37) [10]

>> Зачем тебе Appendrecord? Заюзай Insert и Post
А Insert для 30т. записей, не скажется более долгим по времени чем appendrecord?


 
Jan1   (2007-04-04 11:15) [11]


> А Insert для 30т. записей, не скажется более долгим по времени
> чем appendrecord?

это одно и то же. только ты будешь явно приводить типы.


 
Jan1   (2007-04-04 11:20) [12]


> А Insert для 30т. записей, не скажется более долгим по времени
> чем appendrecord?

ну и конечно если ты будишь коммитить не каждую запись а где-то каждую 1000-ную то скорость будет приличная.



Страницы: 1 вся ветка

Текущий архив: 2007.07.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
2-1181130039
dr_craigan
2007-06-06 15:40
2007.07.01
работа с файлами


2-1181164302
Infinityx93
2007-06-07 01:11
2007.07.01
сортировка строк


4-1169441527
balepa
2007-01-22 07:52
2007.07.01
TDCB


3-1175756389
vl
2007-04-05 10:59
2007.07.01
Тригеры


2-1181127278
SentinelVologda
2007-06-06 14:54
2007.07.01
Mathcad+Delphi