Entrada de produtos

Delphi

05/10/2009

e galera blz? bom, tenho esse codigo! so que dá um erro, ´field requid´.

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

Thiagoangra2

Curtidas 0

Respostas

Facc

Facc

05/10/2009

vc está esquecendo de passar valor para algum campo que é requerido.

em que momento dá o erro?


GOSTEI 0
Thiagoangra2

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

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


GOSTEI 0
Thiagoangra2

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

Facc

05/10/2009

precisa passar valor para eles


GOSTEI 0
Thiagoangra2

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

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

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

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

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

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.


GOSTEI 0
Thiagoangra2

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.


GOSTEI 0
Thiagoangra2

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.


GOSTEI 0
POSTAR