Показать сообщение отдельно
  #12  
Старый 13.07.2010, 12:43
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Вот пример импорт из Ёкселя в Interbase базу:
впринципе на основе примера можете сделать нужный вам.

Цитата:
SQLConnection1.Params.Values['DataBase']:=par.dbname;
SQLConnection1.Connected:=true;
excel := createoleobject('excel.application');
excel.workbooks.open(sedit1.text,false);
workbook:=excel.workbooks.item[1];
sheet := workbook.worksheets[1];
sheet.cells.specialcells(xlcelltypelastcell,emptyp aram).activate;
y := excel.activecell.row;
sProgressBar1.Max:=y;
smemo1.Clear;
stat.AllRec:=y-1;
smemo1.Lines.Add('-----------------------');
smemo1.Lines.Add('Импорт данных из файла: '+sedit1.FileName);
dtt:=now();
smemo1.Lines.Add('Статистика импорта :');
smemo1.Lines.Add('Всего строк');
smemo1.Lines.Add(' к импорту - '+inttostr(stat.AllRec));
smemo1.Lines.Add('');
for i:=2 to y do
begin
//Выбор данных из Ёкселя
st1:=trim(sheet.cells[i,1]);
st2:=trim(sheet.cells[i,2]);
st3:=trim(sheet.cells[i,3]);
st4:=trim(sheet.cells[i,4]);
st5:=trim(sheet.cells[i,5]);
//Вызов ХП
lk.TransactionID := 1;
lk.IsolationLevel := xilREADCOMMITTED;
if SQLConnection1.InTransaction then SQLConnection1.Commit(lk);
SQLConnection1.StartTransaction(lk);
try
ibquery1.Active:=false;
ibquery1.ParamByName('GR').Value:=copy(st1,1,50);
ibquery1.ParamByName('ART').Value:=copy(st2,1,30);
ibquery1.ParamByName('NM').Value:=copy(st3,1,50);
ibquery1.ParamByName('DL').Value:=strtofloat(copy( st4,1,30));
ibquery1.ParamByName('RT').Value:=strtofloat(copy( st5,1,30));
ibquery1.ParamByName('DT').Value:=dateof(sDateEdit 1.Date);
IBQuery1.Active:=true;
SQLConnection1.Commit(lk);
if ibquery1.FieldByName('ID').IsNull then begin
idf:= -1;
end
else idf:=ibquery1.FieldByName('ID').AsInteger;
smemo1.Lines.Add(ibquery1.fieldbyname('msg').AsStr ing);
except
on e:Exception do
begin
SQLConnection1.Rollback(lk);
idf:=-1;
end;
end;
if idf<0 then begin
memo1.Lines.add(st1+' '+st2+' '+st3+' '+st4+' '+st5);
smemo1.Lines.add('Ошибка:'+st1+' '+st2+' '+st3+' '+st4+' '+st5);
end;
if idf<0 then stat.AllIgnore:=stat.AllIgnore+1
else stat.AllInsert:=stat.AllInsert+1;
sprogressbar1.Position:=sprogressbar1.Position+1;
sProgressBar1.Repaint;
end;
sprogressbar1.Position:=0;
excel.quit;
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием