DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
GabrielScorpion
 


País: Brasil
Estado: SP
Cidade: sabino
Mensagens: 5
 Postado em: 9/7/2012 07:40:08 AM

Pessoal criei uma SP no banco(MySQL):
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?



BRUNO LEANDRO
 

 


País: Brasil
Estado: SP
Cidade: Tupã
Mensagens: 554
 Postado em: 9/7/2012 11:01:15 AM

Ola, eu dei uma pesquisada poderia tentar desta forma

#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
Deivison
 
 

 


País: Brasil
Estado: PE
Cidade: x
Mensagens: 483
 Postado em: 9/7/2012 12:58:10 PM

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í!!!
GabrielScorpion
 


País: Brasil
Estado: SP
Cidade: sabino
Mensagens: 5
 Postado em: 9/7/2012 01:04:04 PM

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.
GabrielScorpion
 


País: Brasil
Estado: SP
Cidade: sabino
Mensagens: 5
 Postado em: 9/7/2012 01:10:29 PM


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.
Deivison
 
 

 


País: Brasil
Estado: PE
Cidade: x
Mensagens: 483
 Postado em: 9/7/2012 01:29:02 PM

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...
GabrielScorpion
 


País: Brasil
Estado: SP
Cidade: sabino
Mensagens: 5
 Postado em: 9/7/2012 01:48:10 PM

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.
GabrielScorpion
 


País: Brasil
Estado: SP
Cidade: sabino
Mensagens: 5
 Postado em: 9/7/2012 11:18:06 PM


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;
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03