Подскажите, как переписать этот код импорта
procedure frmChoice_bImportNAF_OnClick (Sender: string; var Cancel: boolean);
var
OpenDialog: TOpenDialog;
sl: TStringList;
arrStr: array of string;
i,c: integer;
sid_sked: string; //опись
sDocNumNAF: string; //номер дела
sDocNameNAF: string; //название
sid_year: string; //год формирования
sid_period: string; //срок хранения
sPagesNAF: string; //количество страниц
sNoteNAF: string; //примечание
YY, MM, DD: string;
begin
OpenDialog := TOpenDialog.Create(frmChoice);
if OpenDialog.Execute then
begin
sl := TStringList.Create;
sl.LoadFromFile (OpenDialog.FileName); ///открытие файла
c := sl.Count - 1;
for i := 1 to c do
begin
arrStr := SplitString(sl[i], ';');
//0 sid_sked
if arrStr[0] <> '' then
begin
sid_sked := SQLExecute ('SELECT id FROM sked WHERE sked LIKE "' + arrStr[0] +'"');
if sid_sked = '' then
begin
SQLExecute ('INSERT INTO sked (sked) VALUES ("'+ arrStr[0] +'");');
sid_sked := IntToStr(Last_Insert_id('sked'));
if sid_sked = '-1' then sid_sked := 'NULL';
end;
end else sid_sked := 'NULL';
//1 sDocNumNAF
if arrStr[1]<>'' then sDocNumNAF := '"'+arrStr[1]+'"' else sDocNumNAF := 'NULL';
//2 sDocNameNAF
if arrStr[2]<>'' then sDocNameNAF := '"' + ReplaceStr(arrStr[2], '"', '""') + '"' else sDocNameNAF := 'NULL';
//3 sid_year
if arrStr[3] <> '' then
begin
sid_year := SQLExecute ('SELECT id FROM year WHERE year LIKE "' + arrStr[3] +'"');
if sid_year = '' then
begin
SQLExecute ('INSERT INTO year (year) VALUES ("'+ arrStr[3] +'");');
sid_year := IntToStr(Last_Insert_id('year'));
if sid_year = '-1' then sid_year := 'NULL';
end;
end else sid_year := 'NULL';
//4 sid_period
if arrStr[4] <> '' then
begin
sid_period := SQLExecute ('SELECT id FROM period WHERE period LIKE "' + arrStr[4] +'"');
if sid_period = '' then
begin
SQLExecute ('INSERT INTO period (period) VALUES ("'+ arrStr[4] +'");');
sid_period := IntToStr(Last_Insert_id('period'));
if sid_period = '-1' then sid_period := 'NULL';
end;
end else sid_period := 'NULL';
//5 sPagesNAF
if arrStr[5]<>'' then sPagesNAF := '"'+arrStr[5]+'"' else sPagesNAF := 'NULL';
//6 sNoteNAF
if arrStr[6]<>'' then sNoteNAF := '"'+arrStr[6]+'"' else sNoteNAF := 'NULL';
SQLExecute ('INSERT INTO one (id_sked, [docNumNAF], [docNameNAF], id_year, id_period, [pagesNAF], [noteNAF]) VALUES ('+
sid_sked +','+
sDocNumNAF +','+
sDocNameNAF +','+
sid_year +','+
sid_period +','+
sPagesNAF +','+
sNoteNAF +
');');
frmChoice.Label8.Caption := IntToStr(i) + ' of ' + IntToStr(c);
Application.ProcessMessages;
end;
sl.Free;
UpdateDatabase('sked');
UpdateDatabase('year');
UpdateDatabase('period');
frmChoice.TableGrid1.dbUpdate;
end;
OpenDialog.Free;
begin
frmChoice.bSearch1.Click; ////!!!!!Нажатие на кнопку ПОИСК (при этом видимые записи таблицы обновляются)
end;
end;
чтобы вместо диалога выбора файла открывалась конкретная предсозданная папка с шаблонами csv,
begin
OpenFile('d:\Archive 1.01\ImportCSV');
end;
в которой лежат несколько разных шаблонов csv по количеству кнопок импорта в проекте?
Т.е., если у меня есть три грида, и каждому из них соответствует своя кнопка "Импорт", то при клике на кнопке пользователь должен попасть в папку, в которой лежат три файла csv и выбрать нужный.