Acesso SQLSERVER com ADO
04/10/2004
0
Para facilitar meu aprendizado estou começando lendo um arquivo externo e inserindo estes dados em uma tabela. Tarefa simples, mas não estou conseguindo sucesso. Gostaria de poder contar com a ajuda de vcs.
Estou usando os componentes ADOCONNECTION, ADOQUERY e DATASOURCE.
Estou usando O Microsoft OLE DB Provider for SQL SERVER como opção de conexão.
A lógica de programação é a seguinte:
procedure TForm1.Button1Click(Sender: TObject); begin AssignFile(ArqPro,´c:\arqobras\Proseq.seq´); Reset(ArqPro); ADOQS1.Close; ADOQS1.OPEN; TotaldeProc:=0; end; procedure TForm1.Button2Click(Sender: TObject); begin while (not eof(arqpro)) do begin readln(ArqPro,RegPro.codigo,Regpro.Inscri,Regpro.CGC, Regpro.Nome,Regpro.Rua,Regpro.Numero,Regpro.Bairro, Regpro.CEP,Regpro.DataG,Regpro.Matric,Regpro.DataV,Regpro.DataP, Regpro.DamAlv,Regpro.Alvara,Regpro.Descri,Regpro.nada); wfordata:=copy(Regpro.DataG,7,2) + ´/´ + copy(Regpro.DataG,5,2) + ´/´ + copy(Regpro.DataG,1,4); wdatag:=strtodate(wfordata); wfordata:=copy(Regpro.DataV,7,2) + ´/´ + copy(Regpro.DataV,5,2) + ´/´ + copy(Regpro.DataV,1,4); wdatav:=strtodate(wfordata); wfordata:=copy(Regpro.DataP,7,2) + ´/´ + copy(Regpro.DataP,5,2) + ´/´ + copy(Regpro.DataP,1,4); wdatap:=strtodate(wfordata); ADOQS1.Insert; ADOQS1.FieldByName(´Procod´).AsString:=RegPro.Codigo; ADOQS1.FieldByName(´Inscricao´).AsString:=RegPro.Inscri; ADOQS1.FieldByName(´CGC´).AsString:=RegPro.CGC; ADOQS1.FieldByName(´Nome´).AsString:=RegPro.Nome; ADOQS1.FieldByName(´Rua´).AsString:=RegPro.Rua; ADOQS1.FieldByName(´Numero´).AsString:=RegPro.Numero; ADOQS1.FieldByName(´Bairro´).AsString:=RegPro.Bairro; ADOQS1.FieldByName(´CEP´).AsString:=RegPro.CEP; ADOQS1.FieldByName(´Data_Inc´).AsDateTime:=wdatag; ADOQS1.FieldByName(´DataVenc´).AsDateTime:=wdatav; ADOQS1.FieldByName(´DataStop´).AsDateTime:=wdatap; ADOQS1.FieldByName(´DamdoAlvara´).AsString:=RegPro.DamAlv; ADOQS1.FieldByName(´TemAlvara´).AsString:=RegPro.Alvara; ADOQS1.FieldByName(´Matric´).AsString:=RegPro.Matric; ADOQS1.FieldByName(´Descricao´).AsString:=RegPro.descri; ADOQS1.Post; TotaldeProc:= TotaldeProc + 1; end; ADOQS1.close; Label1.Visible:=true; Edit1.Visible:=true; Edit1.Text:=inttostr(TotaldeProc); showmessage(´OK. Final do Programa´); end;
O problema é que ao final do programa recebo a seguinte mensagem de erro :OPERAÇÃO DE VARIAS ETAPAS GEROU ERRO. VERIFIQUE CADA VALOR DE STATUS.
A tabela é criada porem os ultimos registros não são incluídos.
Qual o erro que estou cometendo.
Como verificar cada valor de STATUS, como sugerido na mensagem acima???
Agradeço qualquer ajuda.
Se VCs conhecem um livro que mostra o desenvolvimento de uma aplicação usando Delphi, MSSQLSERVER com ADO, por favor me informem o nome do livro. Encontrei alguns porem eles trabalham com MS ACCESS.
Obrigado
Rounilo
Posts
04/10/2004
Aroldo Zanela
No código não vejo nada errado, porém, não entendi o motivo de dois botões: um para abrir e outro para ler. Acredito que pode estar ocorrendo algum problema na formadação de dados ou violação de chave. Tente debugar para verificar o erro.
04/10/2004
Rounilo
Os dois botões foram colocados para me facilitar as varias tentativas de contornar o problema.
07/10/2004
Felipe_cduarte
bom, uma sugestão : informe-se sobre o uso de stored procedures, para fazer as operações de inclusão , alteração e exclusão no BD. Utilizo ADO desta forma e funciona mto bem!
[]´s
Clique aqui para fazer login e interagir na Comunidade :)