1)Tenho num formulario de cadastro de clientes, 2 querys. Uma pra fazer os posts e os edits e outra pra fazer uma cosulta a tabela MySql pra saber se já existe o CPF cadastrado.
Tenho tambem dois Buttos um "Novo" para um novo registro que poe a tabela em estado inserção.
e um "Editar" para alterar um registro existente na tabela que poe a tabela em estado edição.
Tenho a ídea de, ao clikar no botão gravar, sejam feitas algumas considerações;
A - Uma pesquiza usando uma query auxiliar no Form que retornara todos os dados da tabela Clientes onde o Campo cPF_CNPJ seja igual ao preenchido no DBEditCPF_CNPJ.Text.
B - Depois verifica o estado da Query principal do Form:
Caso seja dsInsert, e caso o CPF ou CNPJ digitado não tenha cadastro na tabela, aí dá um Post e grava. Até aí esta ok.
Caso seja dsEdit, e caso o CPF ou CNPJ digitado seja o mesmo do cadastro na tabela, aí dá um Post e grava. Até aí esta ok.
Depois verifica se, caso o CPF ou CNPJ digitado não seja o mesmo do cadastro na tabela e não tenha cadastro na tabela, aí não Posta e aborta. Aqui está dando erro, está gravando mesmo assim.
Eis o código que estou usando. Onde que esta o erro?
procedure TCClientes.BitBtnGravarClick(Sender: TObject);
begin
QryClientes2.Close;
QryClientes2.Sql.Clear;
QryClientes2.SQL.Add('Select * from Clientes where CPF_CNPJ = '+''''+DBEditCPF_CNPJ.Text+''''+'');
QryClientes2.Open;
if QryClientes.State in [dsInsert] then
begin
// if not QryClientes2.Eof then //já existe cadastro
if not QryClientes2.IsEmpty then //já existe cadastro
begin
ShowMessage ('Já existe Cadastro com este CPF/CNPJ. Pesquize!');
Abort;
end
else
begin
QryClientes.Post;
ShowMessage ('Cadastro efetuado com sucesso!');
end
end;
//////////// ShowMessage ('Erro a partir daqui!'); //////////////
if QryClientes.State in [dsEdit] then
begin
if QryClientesCPF_CNPJ.Value = DBEditCPF_CNPJ.Text then
begin
QryClientes.Post;
ShowMessage ('Alteração efetuada com sucesso!');
end
else
begin
//if not QryClientes2.Eof then //já existe cadastro
if not QryClientes2.IsEmpty then //já existe cadastro
begin
ShowMessage ('Já existe Cadastro com este CPF/CNPJ. Pesquize!');
DBEditCPF_CNPJ.SetFocus; // posiciona o cursor
Abort;
end
else
begin
QryClientes.Post;
ShowMessage ('Alteração efetuada com sucesso!');
end
end
end;
////////////////////(Até aqui)//////////////////////////////////////////
end;
2) Outra situação é a seguite:
Tenho em outro formulario 1 edit um combobox e um dbgrid
Com o Edit eu digito um nome ou CPF ou CNPJ
Com a combobox eu escolho qual consulta fazer na tabela se é por Nome ou se é por CPF_CNPJ
No DBGrid eu listo os registros da tabela.
O que eu quero fazer é o seguite:
Quando abrir o form, o DBGrid mostra todos os registros da tabela porem eu queria validalos. Tem um campo Tipo, que valida F 'Física' ou J 'Jurídica'.
E um campo CPF_CNPJ, que traz o value do campo. Eu queria fazer uma busca dizendo que, caso o Tipo seja F, a Mascara é de CPF, e caso o Tipo seja J, a Mascara é de CNPJ.
Porem só esta dando para todas os registros, mascara só referente à do primeiro registro, se o primeiro for F todos são mascaras de CPF, se for J, mascara de CNPJ.
Parece que falta um loop, sei la.
Outra observação é que, no caso de ser feito algum filtro, aí o grid mascara direito, o CPF recebe mascara de CPF e o CNPJ de CNPJ.
O Código que to usando é o seguite nesse form:
procedure TPCli.EditNomeCPF_CNPJChange(Sender: TObject);
begin
if ComboboxEscolha.Text='' then
begin
showmessage('Escolha o tipo da Pesquiza!');
// Limpar o DBEdit:
// EditNomeCPF_CNPJ.text := '';
ComboboxEscolha.setfocus;
Abort;
end;
QryClientes.Close;
QryClientes.SQL.Clear;
QryClientes.SQL.Add('select * from Clientes where '+ComboboxEscolha.Text+' like:vardigito order by Nome');
QryClientes.Parambyname('vardigito').asstring:= EditNomeCPF_CNPJ.text +'%';
QryClientes.Open;
/////// Exibir Mascara no normal do Grid tambem sem filtrar//////////
/////// Detalhe: Quando coloco Mascara antes do filtro, parece que precisa fazer um loop para saber qual é o segundo campo Tipo, se é F ou J.
if QryClientesTipo.Value = 'F' then
begin
QryClientesCPF_CNPJ.EditMask :='999\.999\.999\-99;0;_';
end
else if QryClientesTipo.Value = 'J' then
begin
QryClientesCPF_CNPJ.EditMask :='99\.999\.999\/9999\-99;0;_';
end;
end;
procedure TPCli.FormCreate(Sender: TObject);
begin
// Por Mascara no Grid quando abrir pela primeira vez
// Parece que está pedindo um while na tabela.
{
While QryClientesTipo.Value = 'F' do
begin
QryClientesCPF_CNPJ.EditMask :='999\.999\.999\-99;0;_';
// QryClientesCPF_CNPJ.EditMask :='99\.999\.999\/9999\-99;0;_';
Abort;
end;
While QryClientesTipo.Value = 'J' do
begin
QryClientesCPF_CNPJ.EditMask :='99\.999\.999\/9999\-99;0;_';
Abort;
end;
}
end;
3) Como autenticar mascaras para ela representar como valor vazio.
É preciso colocar mascara para mostrar os dados dos campos Estado e CPF_CNPJ e Telefone de certa forma que a mascara não represente caracters digitados para não atrapalhar as auteticações de campo vazio ou numeros
Muito obrigado a todos que de uma maneira ou de outra contribuirem.
Pergunta
Carlos Rocha
Meu problema agora é o seguinte:
1)Tenho num formulario de cadastro de clientes, 2 querys. Uma pra fazer os posts e os edits e outra pra fazer uma cosulta a tabela MySql pra saber se já existe o CPF cadastrado.
Tenho tambem dois Buttos um "Novo" para um novo registro que poe a tabela em estado inserção.
e um "Editar" para alterar um registro existente na tabela que poe a tabela em estado edição.
Tenho a ídea de, ao clikar no botão gravar, sejam feitas algumas considerações;
A - Uma pesquiza usando uma query auxiliar no Form que retornara todos os dados da tabela Clientes onde o Campo cPF_CNPJ seja igual ao preenchido no DBEditCPF_CNPJ.Text.
B - Depois verifica o estado da Query principal do Form:
Caso seja dsInsert, e caso o CPF ou CNPJ digitado não tenha cadastro na tabela, aí dá um Post e grava. Até aí esta ok.
Caso seja dsEdit, e caso o CPF ou CNPJ digitado seja o mesmo do cadastro na tabela, aí dá um Post e grava. Até aí esta ok.
Depois verifica se, caso o CPF ou CNPJ digitado não seja o mesmo do cadastro na tabela e não tenha cadastro na tabela, aí não Posta e aborta. Aqui está dando erro, está gravando mesmo assim.
Eis o código que estou usando. Onde que esta o erro?
2) Outra situação é a seguite: Tenho em outro formulario 1 edit um combobox e um dbgrid Com o Edit eu digito um nome ou CPF ou CNPJ Com a combobox eu escolho qual consulta fazer na tabela se é por Nome ou se é por CPF_CNPJ No DBGrid eu listo os registros da tabela. O que eu quero fazer é o seguite: Quando abrir o form, o DBGrid mostra todos os registros da tabela porem eu queria validalos. Tem um campo Tipo, que valida F 'Física' ou J 'Jurídica'. E um campo CPF_CNPJ, que traz o value do campo. Eu queria fazer uma busca dizendo que, caso o Tipo seja F, a Mascara é de CPF, e caso o Tipo seja J, a Mascara é de CNPJ. Porem só esta dando para todas os registros, mascara só referente à do primeiro registro, se o primeiro for F todos são mascaras de CPF, se for J, mascara de CNPJ. Parece que falta um loop, sei la. Outra observação é que, no caso de ser feito algum filtro, aí o grid mascara direito, o CPF recebe mascara de CPF e o CNPJ de CNPJ. O Código que to usando é o seguite nesse form:3) Como autenticar mascaras para ela representar como valor vazio.
É preciso colocar mascara para mostrar os dados dos campos Estado e CPF_CNPJ e Telefone de certa forma que a mascara não represente caracters digitados para não atrapalhar as auteticações de campo vazio ou numeros
Muito obrigado a todos que de uma maneira ou de outra contribuirem.
Meu muito obrigado.
Carlos Rocha
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.