Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1178106337
DelphiLexx
2007-05-02 15:45
2007.07.01
Передать процедуру класса в Обычную функцию


2-1181112918
Neket
2007-06-06 10:55
2007.07.01
Предотвратить запуск Excel 2 :-((


11-1164218894
Psychedelic
2006-11-22 21:08
2007.07.01
Когда уже пофиксят этот баг с Group box om?


1-1178102094
I-New
2007-05-02 14:34
2007.07.01
Номер билда


2-1181220749
voe
2007-06-07 16:52
2007.07.01
DBF и пароль





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский