Fórum Importação de Dados #301117
28/10/2005
0
Olá a todos,
Estou fazendo um sistema de importação de dados, ele funciona bem.....só que ele as vzs deixa de gravar o primeiro registro e adiciona uns 2 registros em branco...a unit eh essa...
Se alguem souber me ajudar agradeço...
Estou fazendo um sistema de importação de dados, ele funciona bem.....só que ele as vzs deixa de gravar o primeiro registro e adiciona uns 2 registros em branco...a unit eh essa...
unit Unit33;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, jpeg, Unit35, ExtCtrls, ComCtrls, comobj,
uNIT3, DBCtrls;
type
Tfrmlearquivo = class(TForm)
StatusBar1: TStatusBar;
Panel2: TPanel;
Image1: TImage;
Panel1: TPanel;
GroupBox1: TGroupBox;
StringGrid1: TStringGrid;
Panel3: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label1: TLabel;
Edit1: TEdit;
OpenDialog1: TOpenDialog;
Label2: TLabel;
Label3: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
DBLookupComboBox2: TDBLookupComboBox;
Edit2: TEdit;
Edit3: TEdit;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmlearquivo: Tfrmlearquivo;
implementation
{$R *.dfm}
procedure Tfrmlearquivo.BitBtn1Click(Sender: TObject);
var v_caminho : string;
v_excel : OleVariant;
v_i, v_j : integer;
begin
if OpenDialog1.Execute then
begin
v_caminho := OpenDialog1.FileName;
v_excel := CreateOleObject(´Excel.Application´);
v_excel.Visible := False;
v_excel.Application.Workbooks.Open(v_caminho);
v_j := 0;
while not (AnsiUpperCase(v_excel.cells.item[v_j + 1, 1].value) = ´´) do
begin
inc(v_j);
end;
for v_i := 0 to v_j - 1 do
begin
StringGrid1.Cells[1, v_i] :=
AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,1].Value);
StringGrid1.Cells[2, v_i] :=
AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,2].Value);
StringGrid1.Cells[3, v_i] :=
AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,3].Value);
StringGrid1.Cells[4, v_i] :=
AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,4].Value);
StringGrid1.Cells[5, v_i] :=
AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,5].Value);
StringGrid1.Cells[6, v_i] :=
AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,6].Value);
//Fazer isso até o fim das colunas da planilha..
{se precisar percorrer suas colunas, coloque outra vatiável integer, e incremente ela de acordo com as suas colunas, depois disso, dentro deste for, vc faz um outro for passando a outra variável no lugar da coluna..}
end;
unassigned;
DM2.ClientDataSet1.Insert;
end;
end;
procedure Tfrmlearquivo.BitBtn2Click(Sender: TObject);
var i : integer;
begin
Edit2.Text := DBLookupComboBox1.Field.Value;
Edit3.Text := DBLookupComboBox2.Field.Value;
For i:= 1 to StrtoInt(Edit1.Text) do
Begin
DM2.ClientDataSet1.FieldByName(´TRATAMENTO´).AsString := StringGrid1.Cells[1,i];
DM2.ClientDataSet1.FieldByName(´DESTINATARIO´).AsString := StringGrid1.Cells[2,i];
DM2.ClientDataSet1.FieldByName(´Cep´).AsString := StringGrid1.Cells[3,i];
DM2.ClientDataSet1.FieldByName(´Endereco´).AsString := StringGrid1.Cells[4,i];
DM2.ClientDataSet1.FieldByName(´Bairro´).AsString := StringGrid1.Cells[5,i];
DM2.ClientDataSet1.FieldByName(´Cidade´).AsString := StringGrid1.Cells[6,i];
DM2.ClientDataSet1.FieldByName(´UF´).AsString := ´SP´;
DM2.ClientDataSet1.FieldByName(´id_cliente´).AsString := Edit2.Text;
DM2.ClientDataSet1.FieldByName(´ID_PRODUTO´).AsString := Edit3.Text;
DM2.ClientDataSet1.Post;
DM2.ClientDataSet1.ApplyUpdates(0);
DM2.ClientDataSet1.Insert;
end;
MessageDlg(´Importação realizada com sucesso!´, mtconfirmation, [mbOk], 0);
end;
end.
Se alguem souber me ajudar agradeço...
Ramms
Curtir tópico
+ 0
Responder
Posts
28/10/2005
Firekiller
Tente tirar o Insert do BitBtn1, e no BitBtn2 deixe assim:
procedure Tfrmlearquivo.BitBtn2Click(Sender: TObject);
var i : integer;
begin
Edit2.Text := DBLookupComboBox1.Field.Value;
Edit3.Text := DBLookupComboBox2.Field.Value;
For i:= 1 to StrtoInt(Edit1.Text) do
Begin
DM2.ClientDataSet1.Insert;
DM2.ClientDataSet1.FieldByName(´TRATAMENTO´).AsString := StringGrid1.Cells[1,i];
DM2.ClientDataSet1.FieldByName(´DESTINATARIO´).AsString := StringGrid1.Cells[2,i];
DM2.ClientDataSet1.FieldByName(´Cep´).AsString := StringGrid1.Cells[3,i];
DM2.ClientDataSet1.FieldByName(´Endereco´).AsString := StringGrid1.Cells[4,i];
DM2.ClientDataSet1.FieldByName(´Bairro´).AsString := StringGrid1.Cells[5,i];
DM2.ClientDataSet1.FieldByName(´Cidade´).AsString := StringGrid1.Cells[6,i];
DM2.ClientDataSet1.FieldByName(´UF´).AsString := ´SP´;
DM2.ClientDataSet1.FieldByName(´id_cliente´).AsString := Edit2.Text;
DM2.ClientDataSet1.FieldByName(´ID_PRODUTO´).AsString := Edit3.Text;
DM2.ClientDataSet1.Post;
DM2.ClientDataSet1.ApplyUpdates(0);
end;
MessageDlg(´Importação realizada com sucesso!´, mtconfirmation, [mbOk], 0);
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)