Entrada de produtos
e galera blz? bom, tenho esse codigo! so que dá um erro, ´field requid´.
eu queria fazer o seguite: se o que tem digitado no editbuscar for igual ao código da consulta adicionar todos os registros, aí ai tipo q adicionando, varios codigos um embaixo do outro.
Na realidade estou tendando desenvolver uma entrada de produdos para o estoque !
espero q tenhan intendido. vlw
var
xcod:string;
begin
begin
xcod:=editbuscar.Text;
dm.cdsent.Close;
dm.cdsent.CommandText:=´select * from PRODUTOS where (codigo)=:pcod´;
dm.cdsent.Params[0].AsString:=uppercase(xcod);
dm.cdsent.Open;
end;
if dm.cdsentCODIGO.AsInteger=strtoint(editbuscar.text) then
begin
dm.cdsent.Insert;
dm.cdsentCODIGO.AsInteger:=dm.cdsentCodigo.AsInteger;
dm.cdsentCOD_ANTIGO.AsInteger:=dm.cdsentCOD_ANTIGO.AsInteger;
dm.cdsentQUANTIDADE.AsInteger:=1;
dm.cdsentNOME.AsString:=dm.cdsentNOME.AsString;
dm.cdsentGRUPO.AsInteger:=dm.cdsentGRUPO.AsInteger;
dm.cdsentSUBGRUPO.AsInteger:=dm.cdsentSUBGRUPO.AsInteger;
dm.cdsentFABRICANTE.AsInteger:=dm.cdsentFABRICANTE.AsInteger;
dm.cdsentPCOMPRA.AsInteger:=dm.cdsproPCOMPRA.AsInteger;
dm.cdsentPVENDA.AsInteger:=dm.cdsproPVENDA.AsInteger;
dm.cdsentDT_CADASTRO.AsDateTime:=dm.cdsentDT_CADASTRO.AsDateTime;
dm.cdsent.Post;
end;
end;
eu queria fazer o seguite: se o que tem digitado no editbuscar for igual ao código da consulta adicionar todos os registros, aí ai tipo q adicionando, varios codigos um embaixo do outro.
Na realidade estou tendando desenvolver uma entrada de produdos para o estoque !
espero q tenhan intendido. vlw
Thiagoangra2
Curtidas 0
Respostas
Facc
05/10/2009
vc está esquecendo de passar valor para algum campo que é requerido.
em que momento dá o erro?
em que momento dá o erro?
GOSTEI 0
Thiagoangra2
05/10/2009
vc está esquecendo de passar valor para algum campo que é requerido.
em que momento dá o erro?
da erro nesta linha, quer dizer na hora q salva > dm.cdsent.Post;
eu deixei esta linha em comentário, e nau deu erro, mais o codigo está substituindo o outro deve ser pq está linha nau está sendo executada nau é?
se tivesse ativa essa linha ela add e salvava certo? axo q sim...
enfim, o erro nesta linha!
GOSTEI 0
Facc
05/10/2009
então... vc esqueceu de passar algum falor para o campo obrigatório.
Verifique a sua base e se atente naqueles NOT NULL
Verifique a sua base e se atente naqueles NOT NULL
GOSTEI 0
Thiagoangra2
05/10/2009
então... vc esqueceu de passar algum falor para o campo obrigatório.
Verifique a sua base e se atente naqueles NOT NULL
sim no meu banco de dados, tem 4 campos q são not null
codigo
nome
pcompra
pvenda
o q eu faço?
GOSTEI 0
Facc
05/10/2009
precisa passar valor para eles
GOSTEI 0
Thiagoangra2
05/10/2009
precisa passar valor para eles
foi mal cara, mais como assim passar valores para eles?
ao meu intender eu to dizendo q dm.cdscodigo....:=dm.cdscodigo...
e assim para os outros, isso nau é atribuir valores para eles?
:?:
GOSTEI 0
Facc
05/10/2009
é assim mesmo, mas a partir do momento que vc dá um insert, o campo fica nulo/branco, portanto não está passando valor algum para ele proprio.
GOSTEI 0
Thiagoangra2
05/10/2009
é assim mesmo, mas a partir do momento que vc dá um insert, o campo fica nulo/branco, portanto não está passando valor algum para ele proprio.
entao amigo em que momento eu atribuo os valores para ele? to meio perdido... hhee
GOSTEI 0
Facc
05/10/2009
um modo é jogar esses dados para variaveis e após o insert fazer esses campos receber as respectivas variaveis.
GOSTEI 0
Thiagoangra2
05/10/2009
um modo é jogar esses dados para variaveis e após o insert fazer esses campos receber as respectivas variaveis.
é o suguinte fiz umas alterações no codigo, ele nau dá mais erro, mais agora ele substitui o codigo do dbgrid toda vez que add novo idtem
var
xcod:string;
begin
begin
xcod:=editbuscar.Text;
dm.cdsent.Close;
dm.cdsent.CommandText:=´select * from PRODUTOS where (codigo)=:pcod´;
dm.cdsent.Params[0].AsString:=uppercase(xcod);
dm.cdsent.Open;
end;
if dm.cdsentCODIGO.AsInteger=strtoint(editbuscar.text) then
begin
dm.cdsent.IndexFieldNames:=´CODIGO´;
if dm.cdsent.FindKey([dm.cdsentCODIGO.AsInteger]) then
begin
dm.cdsent.Edit;
dm.cdsent.FieldByName(´QUANTIDADE´).AsInteger:=dm.cdsent.fieldByName(´QUANTIDADE´).AsInteger+1;
dm.cdsent.Post;
end
else
begin
dm.cdsent.Insert;
dm.cdsentCODIGO.AsInteger:=dm.cdsentCodigo.AsInteger;
dm.cdsentCOD_ANTIGO.AsInteger:=dm.cdsentCOD_ANTIGO.AsInteger;
dm.cdsentQUANTIDADE.AsInteger:=1;
dm.cdsentNOME.AsString:=dm.cdsentNOME.AsString;
dm.cdsentGRUPO.AsInteger:=dm.cdsentGRUPO.AsInteger;
dm.cdsentSUBGRUPO.AsInteger:=dm.cdsentSUBGRUPO.AsInteger;
dm.cdsentFABRICANTE.AsInteger:=dm.cdsentFABRICANTE.AsInteger;
dm.cdsentPCOMPRA.AsInteger:=dm.cdsentPCOMPRA.AsInteger;
dm.cdsentPVENDA.AsInteger:=dm.cdsentPVENDA.AsInteger;
dm.cdsentDT_CADASTRO.AsDateTime:=dm.cdsentDT_CADASTRO.AsDateTime;
dm.cdsent.Post;
end;
end;
end;
dá uma olhada o q tem de errado, obrigado
GOSTEI 0
Thiagoangra2
05/10/2009
bom galera reescrevi o codigo e agora ficou desse jeito,
procedure Tfrment.BitBtn1Click(Sender: TObject);
var
xcod:string;
begin
xcod:=editbuscar.Text;
dm.cdsproduto.Close;
dm.cdsproduto.CommandText:=´select * from PRODUTOS where (codigo)=:pcod´;
dm.cdsproduto.Params[0].AsString:=uppercase(xcod);
dm.cdsproduto.Open;
cdsent.Open;
if dm.cdsproduto.IsEmpty=false then
begin
cdsent.IndexFieldNames:=´CODIGO´;
if cdsent.FindKey([dm.cdsprodutoCODIGO.AsInteger]) then
begin
cdsent.Edit;
cdsent.FieldByName(´QUANTIDADE´).AsInteger:=cdsent.fieldByName(´QUANTIDADE´).AsInteger+1;
cdsent.Post;
end
else
begin
cdsent.Append;
cdsentCODIGO.AsInteger:=dm.cdsprodutoCodigo.AsInteger;
cdsentCOD_ANTIGO.AsInteger:=dm.cdsprodutoCOD_ANTIGO.AsInteger;
cdsentQUANTIDADE.AsInteger:=1;
cdsentNOME.AsString:=dm.cdsprodutoNOME.AsString;
cdsentGRUPO.AsInteger:=dm.cdsprodutoGRUPO.AsInteger;
cdsentSUBGRUPO.AsInteger:=dm.cdsprodutoSUBGRUPO.AsInteger;
cdsentFABRICANTE.AsInteger:=dm.cdsprodutoFABRICANTE.AsInteger;
cdsentPCOMPRA.AsInteger:=dm.cdsprodutoPCOMPRA.AsInteger;
cdsentPVENDA.AsInteger:=dm.cdsprodutoPVENDA.AsInteger;
cdsentDT_CADASTRO.AsDateTime:=dm.cdsprodutoDT_CADASTRO.AsDateTime;
cdsentDT_CADASTRO.AsString:=datetostr(date);
cdsent.Post;
end;
editbuscar.SetFocus;
end;
end;
acontece q quando ele encontra o produto, ele exibe todos os produtos no dbgrid, mais eu só queria q aparecesse o codigo q correspondente
me ajudem por favor, brigadao.
procedure Tfrment.BitBtn1Click(Sender: TObject);
var
xcod:string;
begin
xcod:=editbuscar.Text;
dm.cdsproduto.Close;
dm.cdsproduto.CommandText:=´select * from PRODUTOS where (codigo)=:pcod´;
dm.cdsproduto.Params[0].AsString:=uppercase(xcod);
dm.cdsproduto.Open;
cdsent.Open;
if dm.cdsproduto.IsEmpty=false then
begin
cdsent.IndexFieldNames:=´CODIGO´;
if cdsent.FindKey([dm.cdsprodutoCODIGO.AsInteger]) then
begin
cdsent.Edit;
cdsent.FieldByName(´QUANTIDADE´).AsInteger:=cdsent.fieldByName(´QUANTIDADE´).AsInteger+1;
cdsent.Post;
end
else
begin
cdsent.Append;
cdsentCODIGO.AsInteger:=dm.cdsprodutoCodigo.AsInteger;
cdsentCOD_ANTIGO.AsInteger:=dm.cdsprodutoCOD_ANTIGO.AsInteger;
cdsentQUANTIDADE.AsInteger:=1;
cdsentNOME.AsString:=dm.cdsprodutoNOME.AsString;
cdsentGRUPO.AsInteger:=dm.cdsprodutoGRUPO.AsInteger;
cdsentSUBGRUPO.AsInteger:=dm.cdsprodutoSUBGRUPO.AsInteger;
cdsentFABRICANTE.AsInteger:=dm.cdsprodutoFABRICANTE.AsInteger;
cdsentPCOMPRA.AsInteger:=dm.cdsprodutoPCOMPRA.AsInteger;
cdsentPVENDA.AsInteger:=dm.cdsprodutoPVENDA.AsInteger;
cdsentDT_CADASTRO.AsDateTime:=dm.cdsprodutoDT_CADASTRO.AsDateTime;
cdsentDT_CADASTRO.AsString:=datetostr(date);
cdsent.Post;
end;
editbuscar.SetFocus;
end;
end;
acontece q quando ele encontra o produto, ele exibe todos os produtos no dbgrid, mais eu só queria q aparecesse o codigo q correspondente
me ajudem por favor, brigadao.
GOSTEI 0
Thiagoangra2
05/10/2009
bom galera reescrevi o codigo e agora ficou desse jeito,
procedure Tfrment.BitBtn1Click(Sender: TObject);
var
xcod:string;
begin
xcod:=editbuscar.Text;
dm.cdsproduto.Close;
dm.cdsproduto.CommandText:=´select * from PRODUTOS where (codigo)=:pcod´;
dm.cdsproduto.Params[0].AsString:=uppercase(xcod);
dm.cdsproduto.Open;
cdsent.Open;
if dm.cdsproduto.IsEmpty=false then
begin
cdsent.IndexFieldNames:=´CODIGO´;
if cdsent.FindKey([dm.cdsprodutoCODIGO.AsInteger]) then
begin
cdsent.Edit;
cdsent.FieldByName(´QUANTIDADE´).AsInteger:=cdsent.fieldByName(´QUANTIDADE´).AsInteger+1;
cdsent.Post;
end
else
begin
cdsent.Append;
cdsentCODIGO.AsInteger:=dm.cdsprodutoCodigo.AsInteger;
cdsentCOD_ANTIGO.AsInteger:=dm.cdsprodutoCOD_ANTIGO.AsInteger;
cdsentQUANTIDADE.AsInteger:=1;
cdsentNOME.AsString:=dm.cdsprodutoNOME.AsString;
cdsentGRUPO.AsInteger:=dm.cdsprodutoGRUPO.AsInteger;
cdsentSUBGRUPO.AsInteger:=dm.cdsprodutoSUBGRUPO.AsInteger;
cdsentFABRICANTE.AsInteger:=dm.cdsprodutoFABRICANTE.AsInteger;
cdsentPCOMPRA.AsInteger:=dm.cdsprodutoPCOMPRA.AsInteger;
cdsentPVENDA.AsInteger:=dm.cdsprodutoPVENDA.AsInteger;
cdsentDT_CADASTRO.AsDateTime:=dm.cdsprodutoDT_CADASTRO.AsDateTime;
cdsentDT_CADASTRO.AsString:=datetostr(date);
cdsent.Post;
end;
editbuscar.SetFocus;
end;
end;
acontece q quando ele encontra o produto, ele exibe todos os produtos no dbgrid, mais eu só queria q aparecesse o codigo q correspondente
me ajudem por favor, brigadao.
procedure Tfrment.BitBtn1Click(Sender: TObject);
var
xcod:string;
begin
xcod:=editbuscar.Text;
dm.cdsproduto.Close;
dm.cdsproduto.CommandText:=´select * from PRODUTOS where (codigo)=:pcod´;
dm.cdsproduto.Params[0].AsString:=uppercase(xcod);
dm.cdsproduto.Open;
cdsent.Open;
if dm.cdsproduto.IsEmpty=false then
begin
cdsent.IndexFieldNames:=´CODIGO´;
if cdsent.FindKey([dm.cdsprodutoCODIGO.AsInteger]) then
begin
cdsent.Edit;
cdsent.FieldByName(´QUANTIDADE´).AsInteger:=cdsent.fieldByName(´QUANTIDADE´).AsInteger+1;
cdsent.Post;
end
else
begin
cdsent.Append;
cdsentCODIGO.AsInteger:=dm.cdsprodutoCodigo.AsInteger;
cdsentCOD_ANTIGO.AsInteger:=dm.cdsprodutoCOD_ANTIGO.AsInteger;
cdsentQUANTIDADE.AsInteger:=1;
cdsentNOME.AsString:=dm.cdsprodutoNOME.AsString;
cdsentGRUPO.AsInteger:=dm.cdsprodutoGRUPO.AsInteger;
cdsentSUBGRUPO.AsInteger:=dm.cdsprodutoSUBGRUPO.AsInteger;
cdsentFABRICANTE.AsInteger:=dm.cdsprodutoFABRICANTE.AsInteger;
cdsentPCOMPRA.AsInteger:=dm.cdsprodutoPCOMPRA.AsInteger;
cdsentPVENDA.AsInteger:=dm.cdsprodutoPVENDA.AsInteger;
cdsentDT_CADASTRO.AsDateTime:=dm.cdsprodutoDT_CADASTRO.AsDateTime;
cdsentDT_CADASTRO.AsString:=datetostr(date);
cdsent.Post;
end;
editbuscar.SetFocus;
end;
end;
acontece q quando ele encontra o produto, ele exibe todos os produtos no dbgrid, mais eu só queria q aparecesse o codigo q correspondente
me ajudem por favor, brigadao.
GOSTEI 0
Thiagoangra2
05/10/2009
bom galera reescrevi o codigo e agora ficou desse jeito,
procedure Tfrment.BitBtn1Click(Sender: TObject);
var
xcod:string;
begin
xcod:=editbuscar.Text;
dm.cdsproduto.Close;
dm.cdsproduto.CommandText:=´select * from PRODUTOS where (codigo)=:pcod´;
dm.cdsproduto.Params[0].AsString:=uppercase(xcod);
dm.cdsproduto.Open;
cdsent.Open;
if dm.cdsproduto.IsEmpty=false then
begin
cdsent.IndexFieldNames:=´CODIGO´;
if cdsent.FindKey([dm.cdsprodutoCODIGO.AsInteger]) then
begin
cdsent.Edit;
cdsent.FieldByName(´QUANTIDADE´).AsInteger:=cdsent.fieldByName(´QUANTIDADE´).AsInteger+1;
cdsent.Post;
end
else
begin
cdsent.Append;
cdsentCODIGO.AsInteger:=dm.cdsprodutoCodigo.AsInteger;
cdsentCOD_ANTIGO.AsInteger:=dm.cdsprodutoCOD_ANTIGO.AsInteger;
cdsentQUANTIDADE.AsInteger:=1;
cdsentNOME.AsString:=dm.cdsprodutoNOME.AsString;
cdsentGRUPO.AsInteger:=dm.cdsprodutoGRUPO.AsInteger;
cdsentSUBGRUPO.AsInteger:=dm.cdsprodutoSUBGRUPO.AsInteger;
cdsentFABRICANTE.AsInteger:=dm.cdsprodutoFABRICANTE.AsInteger;
cdsentPCOMPRA.AsInteger:=dm.cdsprodutoPCOMPRA.AsInteger;
cdsentPVENDA.AsInteger:=dm.cdsprodutoPVENDA.AsInteger;
cdsentDT_CADASTRO.AsDateTime:=dm.cdsprodutoDT_CADASTRO.AsDateTime;
cdsentDT_CADASTRO.AsString:=datetostr(date);
cdsent.Post;
end;
editbuscar.SetFocus;
end;
end;
acontece q quando ele encontra o produto, ele exibe todos os produtos no dbgrid, mais eu só queria q aparecesse o codigo q correspondente
me ajudem por favor, brigadao.
procedure Tfrment.BitBtn1Click(Sender: TObject);
var
xcod:string;
begin
xcod:=editbuscar.Text;
dm.cdsproduto.Close;
dm.cdsproduto.CommandText:=´select * from PRODUTOS where (codigo)=:pcod´;
dm.cdsproduto.Params[0].AsString:=uppercase(xcod);
dm.cdsproduto.Open;
cdsent.Open;
if dm.cdsproduto.IsEmpty=false then
begin
cdsent.IndexFieldNames:=´CODIGO´;
if cdsent.FindKey([dm.cdsprodutoCODIGO.AsInteger]) then
begin
cdsent.Edit;
cdsent.FieldByName(´QUANTIDADE´).AsInteger:=cdsent.fieldByName(´QUANTIDADE´).AsInteger+1;
cdsent.Post;
end
else
begin
cdsent.Append;
cdsentCODIGO.AsInteger:=dm.cdsprodutoCodigo.AsInteger;
cdsentCOD_ANTIGO.AsInteger:=dm.cdsprodutoCOD_ANTIGO.AsInteger;
cdsentQUANTIDADE.AsInteger:=1;
cdsentNOME.AsString:=dm.cdsprodutoNOME.AsString;
cdsentGRUPO.AsInteger:=dm.cdsprodutoGRUPO.AsInteger;
cdsentSUBGRUPO.AsInteger:=dm.cdsprodutoSUBGRUPO.AsInteger;
cdsentFABRICANTE.AsInteger:=dm.cdsprodutoFABRICANTE.AsInteger;
cdsentPCOMPRA.AsInteger:=dm.cdsprodutoPCOMPRA.AsInteger;
cdsentPVENDA.AsInteger:=dm.cdsprodutoPVENDA.AsInteger;
cdsentDT_CADASTRO.AsDateTime:=dm.cdsprodutoDT_CADASTRO.AsDateTime;
cdsentDT_CADASTRO.AsString:=datetostr(date);
cdsent.Post;
end;
editbuscar.SetFocus;
end;
end;
acontece q quando ele encontra o produto, ele exibe todos os produtos no dbgrid, mais eu só queria q aparecesse o codigo q correspondente
me ajudem por favor, brigadao.
GOSTEI 0