![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Имеется модуль. Исходник тут.
Использовал для импорта из Excel в StringGrid. Прекрасно работает. Сейчас немного модернизировал программу. Теперь необходимо импортировать в БД. Так вот. При выполнении кода: Код:
MailBotForm.StringGrid1.Cells[3,I] := IntToStr(I+1); Cell1 := GetCellIndex(2,I+1); MailBotForm.StringGrid1.Cells[1,I] := ExcelApplication.Range[Cell1,Cell1].Value2; Cell1 := GetCellIndex(3,I+1); MailBotForm.StringGrid1.Cells[2,I] := ExcelApplication.Range[Cell1,Cell1].Value2; В новой версии мне необходимо это же казалось бы значение передать в параметр TDataSet. Делаю так: Код:
MainDM.HaveDuplicate.Close; Cell1 := GetCellIndex(2,I+1); MainDM.HaveDuplicate.Parameters.ParamByName('Name').Value := VarToStr(ExcelApplication.Range[Cell1,Cell1].Value2); MainDM.HaveDuplicate.Open; однако вместо ФИО или Email адреса что хранится в Excel файле, я получаю следущего вида значения: '|C:><5;>|.|.' В чём причина, где я допускаю ошибку, или собственно что вообще делаю не так? Буду рад любому совету или ответу =) Процедура импорта: Код:
Procedure TExcelToolsDataModule.ImportAdresses(ExcFile: String); Var i,j,x: Integer; I_,J_: Integer; Cell1,Cell2: TCellIndex; begin //MailBotForm.Memo4.Lines.Clear; ExcelApplication.Connect; ExcelApplication.Workbooks.Add(ExcFile,1); Cell1 := GetCellIndex(1,1); I:=0; MailBotForm.StringGrid1.CleanupInstance; MailBotForm.StringGrid1.RowCount := 0; ExcelApplication.cells.specialcells(xlcelltypelastcell,emptyparam).activate; x := ExcelApplication.activecell.row; MailBotForm.ProgressBar1.Visible := True; While I<X do begin Try If (ExcelApplication.Range[Cell1,Cell1].Value2 = null) then Continue; Except End; MainDM.HaveDuplicate.Close; Cell1 := GetCellIndex(2,I+1); MainDM.HaveDuplicate.Parameters.ParamByName('Name').Value := VarToStr(ExcelApplication.Range[Cell1,Cell1].Value2); MainDM.HaveDuplicate.Open; If MainDM.HaveDuplicate.RecordCount = 0 then begin Cell1 := GetCellIndex(1,I+1); MailBotForm.StringGrid1.Cells[0,I] := ExcelApplication.Range[Cell1,Cell1].Value2; //MailBotForm.Memo4.Lines.Add(IntToStr(I+1)+' - '+MailBotForm.StringGrid1.Cells[0,I]+' - '+MailBotForm.StringGrid1.Cells[1,I]); MailBotForm.StringGrid1.Cells[3,I] := IntToStr(I+1); Cell1 := GetCellIndex(2,I+1); MailBotForm.StringGrid1.Cells[1,I] := ExcelApplication.Range[Cell1,Cell1].Value2; Cell1 := GetCellIndex(3,I+1); MailBotForm.StringGrid1.Cells[2,I] := ExcelApplication.Range[Cell1,Cell1].Value2; MailBotForm.StringGrid1.RowCount := MailBotForm.StringGrid1.RowCount + 1; //If Not MailBotForm.CheckBox2.Checked then { For I_:= 1 to I do //Проверяем на повторяющиеся адреса. begin If ((MailBotForm.StringGrid1.Cells[0,I_] = MailBotForm.StringGrid1.Cells[0,I]) and (MailBotForm.StringGrid1.Cells[1,I_] = MailBotForm.StringGrid1.Cells[1,I])) and (I_<>I) then begin MessageDlg('Внимание! Есть повторяющиеся адреса! ('+MailBotForm.StringGrid1.Cells[0,I]+')',mtWarning,[mbOK],0); MailBotForm.ProgressBar1.Visible := False; Exit; end; end; } end; MailBotForm.ProgressBar1.Position := (I * 100) div X; Inc(I); MailBotForm.StaticText1.Caption := 'Количество адресов: '+ IntToStr(I); end; ExcelApplication.Workbooks.Close(1); ExcelApplication.Disconnect; MailBotForm.ProgressBar1.Visible := False; end; "Люди никогда не видят то, существование чего им кажется невозможным." ©Терри Пратчетт |