Acesso SQLSERVER com ADO

04/10/2004

0

Senhores embora não seja um grande conhecedor, já tenho alguns conhecimentos no uso do Delphi, Interbase com IBX. Agora estou tentando aprender alguma coisa usando Delphi, Ms SQLSERVER com engine ADO.

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

Rounilo

Responder

Posts

04/10/2004

Aroldo Zanela

Colega,

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.


Responder

04/10/2004

Rounilo

Obrigado. Realmente tinha um erro em um campo de data.
Os dois botões foram colocados para me facilitar as varias tentativas de contornar o problema.


Responder

07/10/2004

Felipe_cduarte

Fala !

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


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar