Autor
Mensagem
Pessoal criei uma SP no banco(MySQL):
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:
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?
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
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
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
#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í!!!
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, 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;








