Fórum Busca do campo nome no banco de dados da erro #470418
18/02/2014
0
Olá Pessoal,
O que eu estou tentando fazer é o seguinte, existe um campo EDIT que é onde o usuário vai digitar o nome do produto. E o que eu queria fazer é que "OnChange" enquanto o usuário estiver escrevendo se o produto já existir no banco de dados vai aparecer uma mensagem "Que o produto já existe!". Eu já consegui fazer de uma forma porém ela não consegue diferenciar de maiusculo e minusculo, este é o modo de como eu fiz:
Por isso eu comecei a querer utilizar a propriedade CommandText para fazer ele pegar direto do banco de dados independende de ser maiuscula ou minuscula. Então comecei a fazer desta forma:
O CODIGO:
O CommandText no ClientDataSet que no caso ta sendo chamado pelo DataSource chamado dtsConsultar.
Porém quando eu utilizo esse modo de comparar o que o usuário digito no campo EDIT com o que existe no campo NOMBRE da tabela do banco de dados, aparece o seguinte erro:
Eu já fiz tudo que eu sei fazer pra tentar solucionar esse erro, já criei um outro ClientDataset com um outro commandText para pegar todos no caso pelo fato de ele nao estar achando o ID do producto:
Porém dai ele fala que toda hora acha o produto mesmo não existindo o produto na tabela. E mais outras coisas que não levaram a lugar algum.
Alguem saberia o que eu estou fazendo de errado?
Desde já agradecido!!!
O que eu estou tentando fazer é o seguinte, existe um campo EDIT que é onde o usuário vai digitar o nome do produto. E o que eu queria fazer é que "OnChange" enquanto o usuário estiver escrevendo se o produto já existir no banco de dados vai aparecer uma mensagem "Que o produto já existe!". Eu já consegui fazer de uma forma porém ela não consegue diferenciar de maiusculo e minusculo, este é o modo de como eu fiz:
procedure TF_FormProduto.edtNomeChange(Sender: TObject);
var
I: Integer;
begin
for I := 0 to TClientDataSet(dtsConsultar.DataSet).RecordCount -1 do
begin
if edtNome.Text = TClientDataSet(dtsConsultar.DataSet).FieldByName('NOMBRE').AsString then
begin
ShowMessage('Produto já existe! Caso queira inserir mais unidades vá para a Entrada.');
edtNome.SetFocus;
exit;
end;
end;
end;Por isso eu comecei a querer utilizar a propriedade CommandText para fazer ele pegar direto do banco de dados independende de ser maiuscula ou minuscula. Então comecei a fazer desta forma:
O CODIGO:
procedure TF_FormProduto.edtNomeChange(Sender: TObject);
begin
with TClientDataSet(dtsConsultar.DataSet) do
begin
close;
CommandText:= 'select NOMBRE from producto where NOMBRE like ' + QuotedStr('%' + edtNome.Text + '%');
open;
end;
if DMPesq.cds_PesqProduto.RecordCount > 0 then
begin
ShowMessage('Produto já existe! Caso queira inserir mais unidades vá para a Entrada.');
end;
end;O CommandText no ClientDataSet que no caso ta sendo chamado pelo DataSource chamado dtsConsultar.
select A.id_producto, A.nombre, B.nombre AS proveedor, C.nombre AS marca, D.NOMBRE as GRUPO, E.NOMBRE as PROCEDENCIA, F.NOMBRE as TIPO_PRODUCTO, G.NOMBRE as UNIDAD, A.CODIGO_INTERNO, A.CODIGO_BARRA, A.CODIGO_GR, A.ESTOQUE_REAL, A.ESTOQUE_TEMPORARIO, A.ESTOQUE_INICIAL, A.ESTOQUE_MINIMO, A.FECHA_FABRICADO, A.FECHA_VENCIMIENTO, A.PRECIO_COSTO, A.PRECIO_MEDIO, A.PRECIO_VENTA, A.PORCENTAJE_COMISION, A.porcentaje_maxima FROM producto A, proveedor B, marca C, grupo D, procedencia E, tipo_producto F, unidad G WHERE A.id_proveedor = B.id_proveedor AND A.ID_MARCA = C.ID_MARCA and A.ID_GRUPO = D.ID_GRUPO and A.ID_PROCEDENCIA = E.ID_PROCEDENCIA and A.ID_TIPO_PRODUCTO = F.ID_TIPO_PRODUCTO and A.ID_UNIDAD = G.ID_UNIDAD
Porém quando eu utilizo esse modo de comparar o que o usuário digito no campo EDIT com o que existe no campo NOMBRE da tabela do banco de dados, aparece o seguinte erro:
Project CCMS.exe raised exception class EDatabaseError with message 'cds_PesqProduto: Field 'ID_PRODUCTO' not found'.
Eu já fiz tudo que eu sei fazer pra tentar solucionar esse erro, já criei um outro ClientDataset com um outro commandText para pegar todos no caso pelo fato de ele nao estar achando o ID do producto:
select * from producto
Porém dai ele fala que toda hora acha o produto mesmo não existindo o produto na tabela. E mais outras coisas que não levaram a lugar algum.
Alguem saberia o que eu estou fazendo de errado?
Desde já agradecido!!!
Edson Vilhalba
Curtir tópico
+ 0
Responder
Posts
18/02/2014
Edson Vilhalba
Pessoal descobri o erro mesmo assim muito obrigado!
Caso alguem queira só fazer isto:
No commandtext do clientdataset coloque:
E no EDIT coloque OnExit:
Caso alguem queira só fazer isto:
No commandtext do clientdataset coloque:
Select * from produto
E no EDIT coloque OnExit:
procedure TF_FormProduto.edtNomeExit(Sender: TObject);
begin
if edtNome.Text <> EmptyStr then
begin
with TClientDataSet(dtsALLConsultar.DataSet) do
begin
close;
CommandText:= 'select * from producto where NOMBRE like ' + QuotedStr('%' + edtNome.Text + '%');
open;
end;
if DMPesq.cds_PesqALLProducto.RecordCount > 0 then
begin
ShowMessage('Produto já existe! Caso queira inserir mais unidades vá para a Entrada.');
end;
end;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)