Autor
Mensagem
Pessoal criei uma SP no banco(MySQL):
Código:
#Código
Nela tem uma mensagem, qdo eu executar essa minha SP no delphi essa mensagem é disparada no delphi caso a pessoa não preencha os dados?
Tô perguntando, pq no meu banco essa mensagem foi disparada qdo não insiro os dados ou cpf ou nome.
O que eu quero é saber como essa mensagem é disparado no meu delphi, no delphi to usando DBEXPRESS e o ZSQLStoredprod
faço as ligações certo, e no meu botão de inserir coloquei:
#Código
Tipo inseri normalmente, mais qdo eu deixo de preencher ou onome ou cpf, aquela mensagem não dispara.
COMO DISPARO ESSA MENSAGEM NO DELPHI?
Código:
#Código
DELIMITER // DROP PROCEDURE IF EXISTS `NomeCli_CPFCli` // CREATE PROCEDURE NomeCli_CPFCli(v_cod_cli INT, v_nome VARCHAR(60), v_cpf VARCHAR(20)) BEGIN IF ((v_nome != ) && (v_cpf != )) THEN INSERT INTO fisico (cod_cli,nome_cli,cpf_) VALUES (v_cod_cli, v_nome, v_cpf); ELSE SELECT NOME e CPF devem ser fornecidos para o cadastro! AS Msg; END IF; END// DELIMITER;
Nela tem uma mensagem, qdo eu executar essa minha SP no delphi essa mensagem é disparada no delphi caso a pessoa não preencha os dados?
Tô perguntando, pq no meu banco essa mensagem foi disparada qdo não insiro os dados ou cpf ou nome.
O que eu quero é saber como essa mensagem é disparado no meu delphi, no delphi to usando DBEXPRESS e o ZSQLStoredprod
faço as ligações certo, e no meu botão de inserir coloquei:
#Código
SQLStoredProc1.Close;
SQLStoredProc1.ParamByName(v_cod_cli).Value := dbedit1.Text;
SQLStoredProc1.ParamByName(v_nome).Value := dbedit2.Text;
SQLStoredProc1.ParamByName(v_cpf).Value := dbedit3.Text;
SQLStoredProc1.ExecProc;
Tipo inseri normalmente, mais qdo eu deixo de preencher ou onome ou cpf, aquela mensagem não dispara.
COMO DISPARO ESSA MENSAGEM NO DELPHI?
Ola, eu dei uma pesquisada poderia tentar desta forma
#Código
ai no delphi
#Código
qualquer duvida estou a disposicao
#Código
DELIMITER // DROP PROCEDURE IF EXISTS `NomeCli_CPFCli` // CREATE PROCEDURE NomeCli_CPFCli(v_cod_cli INT, v_nome VARCHAR(60), v_cpf VARCHAR(20)) BEGIN DECLARE EXIT HANDLER FOR SQLSTATE 42000 SELECT NOME e CPF devem ser fornecidos para o cadastro!; IF ((v_nome != ) && (v_cpf != )) THEN INSERT INTO fisico (cod_cli,nome_cli,cpf_) VALUES (v_cod_cli, v_nome, v_cpf); ELSE CALL raise_error; END IF; END// DELIMITER;
ai no delphi
#Código
try SQLStoredProc1.Close; SQLStoredProc1.ParamByName(v_cod_cli).Value := dbedit1.Text; SQLStoredProc1.ParamByName(v_nome).Value := dbedit2.Text; SQLStoredProc1.ParamByName(v_cpf).Value := dbedit3.Text; SQLStoredProc1.ExecProc; except on E: Exception do ShowMessage(E.Message); end;
qualquer duvida estou a disposicao
Porquê não faz sua validação a nível de sistema, já que é uma validação simples e com isso vc nao precisaria ir no servidor de dados e voltar com a resposta (como está usando o banco vc precisará se comunicar com o banco e voltar para o front-end (sistema)).
Acho que ficaria mais simples (apenas uma sugestão)!!!
Boa sorte e bons códigos aí!!!
Acho que ficaria mais simples (apenas uma sugestão)!!!
Boa sorte e bons códigos aí!!!
Pois é amigo eu tentei dessa forma, inclusive tentei fazer a procedure com handlers desse jeito que passou, e mesmo assim não deve resultado diferente.
Tipo stored procedure aceita try e except no delphi? é que eu achava que num dava usar. Enfim...mesmo usando ou não não tipo sucesso aqui, ainda a mensagem não disparou. A SP não deixa inserir sem CPF ou NOME mais também não disparada a tal mensagem.
Tipo stored procedure aceita try e except no delphi? é que eu achava que num dava usar. Enfim...mesmo usando ou não não tipo sucesso aqui, ainda a mensagem não disparou. A SP não deixa inserir sem CPF ou NOME mais também não disparada a tal mensagem.
Citação:
Porquê não faz sua validação a nível de sistema, já que é uma validação simples e com isso vc nao precisaria ir no servidor de dados e voltar com a resposta (como está usando o banco vc precisará se comunicar com o banco e voltar para o front-end (sistema)).
Acho que ficaria mais simples (apenas uma sugestão)!!!
Boa sorte e bons códigos aí!!!
Entendi cara, mais o seguinte...isso aqui que coloquei é apenas um exemplo para entenderem melhor o que eu quero...no sistema é um pouco mais complexo. E eu tô preferindo fazer por banco de dados...pq meu sistema a maioria vai ser no banco de dados a programação atraves de SP,triggers e functions e também pq quero aprender como fazer o delphi disparar uma mensagem atraves de uma SP.
Entendo!!!
Vc tera que utilizar componentes que possam interagir com o seu componente ou dbexpress ou zeoslib mesmo (nisso vc está correto), agora vc deverá fazer sua codificação de forma que possa ter essa interação entre o sistema e o banco, é que aqui no trabalho não tenho como fazer um exemplo por não trabalharmos com delphi...
Vc tera que utilizar componentes que possam interagir com o seu componente ou dbexpress ou zeoslib mesmo (nisso vc está correto), agora vc deverá fazer sua codificação de forma que possa ter essa interação entre o sistema e o banco, é que aqui no trabalho não tenho como fazer um exemplo por não trabalharmos com delphi...
Citação:
Bom, vou continuar tentando aqui...mais ainda aguardo sugestões...caso eu consiga eu posto o resultado pra pessoas que também possa ter esse duvida que tenho.
Bom o jeito foi fazer a nivel de sistema mesmo, então fizassim:
#Código
if (sp.ParamByName(v_nome).Asstring <> ) and
(sp.ParamByName(v_cpf).Asstring <> )then
begin
sp.ExecProc;
// atualiza tabela
ClientDataSet1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.add(select * from clientes);
ClientDataSet1.open;
end
else
begin
ShowMessage(Preencha o CPF e Nome);
// atualiza tabela
ClientDataSet1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.add(select * from clientes);
ClientDataSet1.open;
end;








