Форум: "Базы";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c