Fórum ADOConnection & BD Interbase #426983
24/10/2012
0
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
Curtir tópico
+ 0Posts
24/10/2012
Alisson Santos
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.
Gostei + 0
24/10/2012
Paulo
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.
Gostei + 0
24/10/2012
Alisson Santos
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.
Gostei + 0
25/10/2012
Gilvanio Gonçalves
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+
Gostei + 0
25/10/2012
Alisson Santos
Fica ao seu critério.
Gostei + 0
27/10/2012
Paulo
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;
Gostei + 0
27/10/2012
Gilvanio Gonçalves
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.
Gostei + 0
27/10/2012
Alisson Santos
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;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)