Страдал точно таки, только мне надо было из dbf в Oracle'скую таблицу перекинуть значения. Пишешь просто запрос (я подключался через BDE):
| Код | procedure TForm1.sBitBtn2Click(Sender: TObject); var i,a: integer; k: string; begin if sOpenDialog1.Execute then k:='select ZKPO, S from "' + sOpenDialog1.FileName +'"' else exit; Query1.Close; Query1.SQL.Clear; Query1.SQL.Text:=k; {Query1.SQL.Text:='select ZKPO, S from "BANK2410.dbf"';} Query1.Prepare; Query1.Open; Query2.SQL.Clear; Query2.SQL.Text:='insert into ":ren4ora:BANKVUP" (ZKPO, S) values (:param1, :param2)'; sGauge1.MinValue:=0; sGauge1.MaxValue:=Query1.RecordCount; a:=sGauge1.MaxValue; for i:=1 to a do begin Application.ProcessMessages; sLabelFX2.Caption := 'експортовано '+ IntToStr(i) + ' записів з ' +IntToStr(a); Query2.ParamByName('param1').AsFloat:=Query1.FieldByName('ZKPO').AsFloat; Query2.ParamByName('param2').AsFloat:=Query1.FieldByName('S').AsFloat; Query2.Prepare; Query2.ExecSQL; Query1.Next; sGauge1.Progress:=i+1; end;
sGauge1.Progress:=0; MessageDlg('Всі дані експортовано у базу даних!', mtInformation, mbOKCancel,0);
end;
|
Тут, конечно, немного раздуто, но красиво и передо мной стояла задача выводить ProgressBar (но я немного отошел от него) и надпись, сколько записей из скольки уже переброшено (зачем это надо - понятия не имею). Потому пришлось два запроса делать и т.д. Но код абсолютно рабочий, в принципе, всё равно, что из чего перекидывать, создаешь два подключения, два набора данных и работаешь с ними. Если что не ясно - спрашивай, я сам дуплился с этим, пока всё понял |