Fórum ADOConnection & BD Interbase #426983

24/10/2012

0

Criei um banco de dados no interbase e gostaria que alguem ensinasse a conectar via ADOConnection.

e tambem a configuração dos componetes que irei usar, para que o meu cadastro possa ser incluido em ordem alfabetica:

ADOQuery
DataSource

desde já agradeço a todos.
Paulo

Paulo

Responder

Posts

24/10/2012

Alisson Santos

Amigo qual o seu conhecimento em delphi????
Pois não adianta nós ensinarmos você a fazer a configuração se não vai conseguir desenrolar após isso.
O ideal é se caso não souber muito procurar apostilas ensinando como trabalhar com esse componente ou outros componentes para aumentar o seu grau de conhecimento referente a ferramenta delphi.
Responder

Gostei + 0

24/10/2012

Paulo

Amigo qual o seu conhecimento em delphi????
Pois não adianta nós ensinarmos você a fazer a configuração se não vai conseguir desenrolar após isso.
O ideal é se caso não souber muito procurar apostilas ensinando como trabalhar com esse componente ou outros componentes para aumentar o seu grau de conhecimento referente a ferramenta delphi.


Eu acho que vc não tem conhecimento do assunto programação, pois tenho acompanhado suas participações e única resposta sua no forum é:

"qual o seu conhecimento em delphi????". Por favor amigo, se vc não quer ajudar por gentileza não atrapalhe.
Responder

Gostei + 0

24/10/2012

Alisson Santos

Amigo qual o seu conhecimento em delphi????
Pois não adianta nós ensinarmos você a fazer a configuração se não vai conseguir desenrolar após isso.
O ideal é se caso não souber muito procurar apostilas ensinando como trabalhar com esse componente ou outros componentes para aumentar o seu grau de conhecimento referente a ferramenta delphi.


Eu acho que vc não tem conhecimento do assunto programação, pois tenho acompanhado suas participações e única resposta sua no forum é:

"qual o seu conhecimento em delphi????". Por favor amigo, se vc não quer ajudar por gentileza não atrapalhe.


Desculpe meu amigo, mais eu penso diferende de você, eu trabalho com delphi a mais de 6 anos, e tenho conhecimento sim, mais o que sempre quero são pessoas que querem aprender de verdade, pois já passei por muitos forum e foruns conhecidos que as pessoas acham que por que existe forum somos todos obrigados a dar a resposta na mão sem ao minimo de trabalho para ele pesquisar.

Acho que quem quer aprender primeiramente se interessa por um assunto e vai ao fundo, e posta no forum quando realmente fica martelando algo e não chega a um resultado.

Questionei se ele tem conhecimento pois não adianta nada falarmos como fazer a ligação dos componentes e depois ele não ele não conseguir caminhar.

Me desculpe se eu não sou igual você que sempre tem uma que entrega o peixe e não ensina a pessoa a pescar.

Pessoal do forum me desculpe por essa resposta mais não pude deixar quieto, devido ele falar que acha que eu não conheço devido a minha resposta.
Responder

Gostei + 0

25/10/2012

Gilvanio Gonçalves

Colega, te aconselho o seguinte:

Ado não é o melhor conjunto de componentes para vc mexer com interbase.
No entanto vc pode baixar drivers odbc que funcionem com o ADO.

Se vc tiver a versão server do interbase ele já vem com driver ODBC

aconselho vc a usar os componentes da paleta Interbase,Use, SQLConection e DataSet em conjunto com o ClienteDataSet e Provider, fica tudo mais simples de se fazer.


mas veja este link tlavez tenha algo que vc possa adpatar ao exemplo que deseja.
pois, conhecimento nunca é demias.

[url]http://www.planetadelphi.com.br/dica/6728/acesso-firebird-com-ado[/url]

Quem sabe muito, na verdade sabe é pouco, e quem sabe pouco ,tem muito pra ensinar, pois não arrota prepotencia.


At+
Responder

Gostei + 0

25/10/2012

Alisson Santos

Você também pode utilizar o dbexpress caso seja a sua necessidade, utilizando os compontentes da paleta dbexpress.
Fica ao seu critério.
Responder

Gostei + 0

27/10/2012

Paulo

Colega, te aconselho o seguinte:

Ado não é o melhor conjunto de componentes para vc mexer com interbase.
No entanto vc pode baixar drivers odbc que funcionem com o ADO.

Se vc tiver a versão server do interbase ele já vem com driver ODBC

aconselho vc a usar os componentes da paleta Interbase,Use, SQLConection e DataSet em conjunto com o ClienteDataSet e Provider, fica tudo mais simples de se fazer.


mas veja este link tlavez tenha algo que vc possa adpatar ao exemplo que deseja.
pois, conhecimento nunca é demias.

[url]http://www.planetadelphi.com.br/dica/6728/acesso-firebird-com-ado[/url]

Quem sabe muito, na verdade sabe é pouco, e quem sabe pouco ,tem muito pra ensinar, pois não arrota prepotencia.


At+




Eu usei os componentes interbase(IBQUERY, IBTRANSACTION, IBDATABASE,), DATASOURSE. A CONEXÃO COM O BD DEU CERTO,


porém eu não consegui programar para inclusão, exclusão e pesquisa no Cadastro. Vc pode me dar uma dica pois no botão NOVO, fiz o seguinte; Dm.IBQuery.append;
Responder

Gostei + 0

27/10/2012

Gilvanio Gonçalves

para inserir, incluir dados, no exemplo usei edit adapte ao seu projeto:

query.sql.Clear; 
query.sql.Add('INSERT INTO CLIENTES(NOMCLI, ENDCLI, BAICLI, CEP_CLI, DCDCLI)'); 
query.sql.Add('values (:NOMCLI, :ENDCLI, :BAICLI, :CEP_CLI, :DCDCLI)'); 
query.ParamByName('NOMCLI').Value := edtNom.Text; 
query.ParamByName('ENDCLI').Value := edtEnd.Text; 
query.ParamByName('BAICLI').Value := edtBai.Text; 
query.ParamByName('CEP_CLI').Value := edtCep.Text; 
query.ParamByName('DCDCLI').asString := FormatDateTime('mm/dd/yyy', StrToDate(edtDCD.Text)); 
query.ExecSQL;


para pesquisa:

na sua query:
 Select * 
From TABCCLIENTE 
Where NOMECOMPLETO like '%:PRMnomecompleto%'


procedure TFormPesquisaCadastro.BTNpesquisacadastroClick(Sender: TObject); 
BEGIN 
  begin 
    if editPesquisaCadastro.Text = '' then 
     begin 
       messagebeep(16); 
       messagebox(FormPesquisaCadastro.Handle,'Digite no campo!'#13'O campo deve ser preenchido.','AgenTel - Pesquisar Cadastro',mb_Ok+MB_ICONQUESTION); 
       editPesquisaCadastro.SetFocus; 
     end 
    else 
     if RadioGroupPesquisaCadastro.ItemIndex = 0 then 
      begin 
        query.NomeCompleto.Close; 
        query.NomeCompleto.ParamByName('PRMnomecompleto').AsString:=''+ EditPesquisaCadastro.Text +'%'; 
        query.NomeCompleto.Open; 
        editPesquisaCadastro.Clear; 
      end; 
  end; 
END;



ajuste no seu projeto, espero ter te ajudado.
Responder

Gostei + 0

27/10/2012

Alisson Santos

Amigo acho que os códigos abaixo pode tem auxiliar.
Estou deixando um código abaixo que é utilizado com o dbexpress, acho que por ele você vendo consegue desenvolver o seu.
Lembrando que existe outras maneiras de ser feito, cada um tem a sua particularidade e sua forma de desenvolvimento ok.
Esse foi de um projeto que auxiliei no treinamento de um desenvolvedor, aonde estão as chamadas pra o dsLibPadrao é que existe um componente do tipo datasource na tela principal, sendo assim utiliza a referencia a esse componente, caso não queira fazer dessa maneira, basta criar uma propriedade do tipo dataset e ao invés de fazer a referencia ao componente na tela poderia estar fazendo a referencia direto ao data set.

Fica o seu critério de como quer trabalhar. se precisar de auxilio qualquer coisa me informar que eu posso auxiliar tranquilamente.

Alterar
   try
      //Verificar se o dataset está ativo, caso não esteja ele abre o banco
      if not dsLibPadrao.DataSet.Active then
         dsLibPadrao.DataSet.Open;

      //comando abaixo altera registro no banco.
      dsLibPadrao.DataSet.Edit;
     
      //Caso no processo acima de algum erro eu exibo o erro e cancelo a atualização
      except
      on E:Exception do begin
			MessageDlg(MSG_ERRO_ALT + #13#10 + 'Erro => ' + E.Message,mtError,[mbOk],0);
         TClientDataSet(dsLibPadrao.DataSet).CancelUpdates;
         Abort;
     end;
   end;


Inserir
   try
      //Estou verificando se tabela está aberta, caso não esteja o comando open abrirá.
      // Existe diferença entre active e open (active, propriedade boleana / open metodo que abre a tabela)
      if not (dsLibPadrao.DataSet.Active) then
      begin
         dsLibPadrao.DataSet.Active := true;
         dsLibPadrao.DataSet.Open;
      end;

      //comando abaixo insere o registro no banco.
      dsLibPadrao.DataSet.Insert;

      //Caso no processo acima de algum erro eu exibo o erro e cancelo a inclusão
      except
      on E:Exception do begin
			MessageDlg(MSG_ERRO_INT + #13#10 + 'Erro => ' + E.Message,mtError,[mbOk],0);
         dsLibPadrao.DataSet.Cancel;
         Abort;
        end;
     end;


Excluir
   try
      //Instrução abaixo verifica se a query está vazia, caso não esteja ai executa o comando abaixo
      if not dsLibPadrao.DataSet.IsEmpty then
      begin
         if MessageBox(Self.Handle, MSG_EXCLUIR, 'Aviso', MB_OKCANCEL or MB_ICONEXCLAMATION) = IDOK then;
         begin
            //linha abaixo chama o procedimento de deletar arquivo do banco
            dsLibPadrao.DataSet.Delete;

            //Instrução faz um typecast para verificar se a propriedade dataset
            //realmente pertence a classe TClientedataset
            //Caso pertença, ele faz um applyupdates que atualiza o banco com o delete.
            TClientDataSet(dsLibPadrao.DataSet).ApplyUpdates(0);

            MessageBox(Self.Handle, MSG_EXCLUIDO_SUCESSO, 'Exclusão de Registro', MB_OK or MB_ICONINFORMATION);

            //Comando abaixo deixa inativo quando pressionado o excluir
            Executar := oprConf_Canc;

            //Linha abaixo fecha o dataset principal depois da exclusão do registro
            dsLibPadrao.DataSet.Close;
         end;
      end;
     //Bloco de instrução abaixo, caso acima retorne algum erro, executa o comando abaixo notificando
     //o tipo de erro que ocorreu.
     except
      on E:Exception do begin

         //Mensagem de cancelamento de exclusão de registro trazendo o erro original
			MessageDlg(MSG_EXCLUSAO_CANCEL + #13#10 + 'Erro => ' + E.Message,mtError,[mbOk],0);

         //Caso entre nesse laço, programa cancela o update no banco
         TClientDataSet(dsLibPadrao.DataSet).CancelUpdates;
     end;


Confirmar
   try
      {:Verifico se está no modo de Inserção de registro}
      if dsLibPadrao.DataSet.State = dsInsert then
      begin
         {:Valido para verificar se não tem nenhum campo requerido sem preenchimento}
         if Validar and (dsLibPadrao.DataSet <> nil) then
         begin
            {:Aplico o post nas informações que foram informadas nos campos referidos}
            dsLibPadrao.DataSet.Post;
            {:Faço um typecast para verificar se o componente é um tclientdataset, caso seja executa o apllyupdates retornando 0}
            TClientDataSet(dsLibPadrao.DataSet).ApplyUpdates(0);
            {:Mensagem que aparecerá quando o as informações acima foram gravadas corretamente}
            MessageBox(Self.Handle, MSG_OK, 'Informação', MB_OK+MB_ICONQUESTION);

            if MessageBox(Self.Handle, 'Deseja continuar Incluindo registro???', 'Continuar Inclusão', MB_OKCANCEL or MB_ICONEXCLAMATION) = IDOK then
               {:Caso a escolha seja sim, ele automáticamente colocará o dataset em modo de inserção}
               dsLibPadrao.DataSet.Append
            else
            begin
               {:Caso a escolha seja cancelar, automáticamente ele cancelará a requisição ao dataset}
               dsLibPadrao.DataSet.Cancel;
               {:fecho o dataset}
               dsLibPadrao.DataSet.Close;
               {:desabilito o controle do scrollbox}
               scrllbxCadastro.Enabled := False;
               {:chamo a propriedade executar chamando o metodo de cancelar}
               Executar := oprConf_Canc;
            end;
         end;
      end;
   {:Caso ocorra algum erro no bloco try, é acionado na hora o bloco exception informando o erro tratado e o original}
   except
      on E:Exception do begin
        MessageDlg(MSG_ERROGR + #13#10 + 'Erro => ' + E.Message,mtError,[mbOk],0);
        TClientDataSet(dsLibPadrao.DataSet).CancelUpdates;
      end;
   end;

   {:Estou verificando o dataset está em modo de edição}
   try
      if dsLibPadrao.DataSet.State = dsEdit then
      begin
         {:faço um typecast para atualizar as informações da edição}
         TClientDataSet(dsLibPadrao.DataSet).ApplyUpdates(0);
         {:mensagem que irá aparecer quando for gravado as informações no banco corretamente}
         MessageBox(Self.Handle, MSG_ALTERADO, 'Alteração bem Sucedida', MB_OK or MB_ICONINFORMATION);
         {:Estou fechando o dataset pois não terá mais registro para alterar}
         dsLibPadrao.DataSet.Close;
         {:Após a alteração desbilito os conroles que estão no scrollbox}
         scrllbxCadastro.Enabled := False;
         {:Executo o tipo de executar que habilitará os botões para eu que necessito}
         Executar := oprConf_Canc;
      end;
     {:Caso aconteça alguma coisa na rotina acima, o exception é acionado automáticamente informando
     a mensagem tratada e o erro original}
     except
      on E:Exception do begin
			MessageDlg(MSG_ERRO_ALT + #13#10 + 'Erro => ' + E.Message,mtError,[mbOk],0);
         TClientDataSet(dsLibPadrao.DataSet).CancelUpdates;
         Abort;
     end;
   end;


Cancelar
   try
      //Instrução que retorna a mensagem quando um registro é Cancelado
      confCanc := Application.MessageBox(MSG_PCANCEL_IN_AL, 'Atenção',
      MB_OKCANCEL + MB_DEFBUTTON1 + MB_ICONQUESTION);

      if confCanc = IDOK then
      begin
         //Instrução cancela qualquer coisa que está fazendo
         dsLibPadrao.DataSet.Cancel;
         Application.MessageBox(MSG_CANCEL_IN_AL, 'Informação', MB_OK+MB_ICONQUESTION);

         //Instrução que deixa o modal result do campo como sem ação
         ModalResult := mrNone;

         //Instrução fecha o dataset
         dsLibPadrao.DataSet.Close;

         //Instrução deixa o tabsheet Falso sem edição
         tbshtCadastro.Enabled := False;
         Executar := oprConf_Canc;
      end;

   except
  	on E:Exception do begin
			MessageDlg('Ocorreu um erro ao tentar cancelar as modificações !!!' + #13#10 +
        			  'Erro => ' + E.Message,mtError,[mbOk],0);
        TClientDataSet(dsLibPadrao.DataSet).CancelUpdates
     end;
   end;

   if confCanc = IDCANCEL then
   begin
      //Instrução que deixa o modal result do campo como sem ação
      ModalResult := mrNone;
      Abort;
   end;


Responder

Gostei + 0

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

Aceitar