Pesquisa
Bom tenho 3 probleminhas eu acho que é simples porem to meio perdido, primeiro
eu preciso fazer uma pesquisa de produtos e retornar os valores num dbedit de outra tela de cadastro
de itens bom eu fiz assim
procedure Tpesquisaprodutos.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if key = #13 then
begin
idescricao:=deasy.CdsProdutos.FieldByName(nome).asstring;
icodigo:=deasy.CdsProdutos.FieldByName(barras).asstring;
cadastronotas.dbedit12.text:= idescricao;
cadastronotas.dbedit22.text:= icodigo; close; end;
end; criei duas variaveis globais pra armazenar o valor do campo quando eu teclo enter ela deveria armazenar o valor do campo, mais nao armazena fika em branco, quando teclo o enter fika em branco na outra tela se eu deixar ativado r o clientdataset ela so me traz o primeiro registro pelo menos foi o que pareceu, nao ta me trazendo o registro q eu to selecionado no dbgrid duvida 2 como eu faço pra calcular um valor x na tela de cadastro de um pedido pro exemplo, eu digito a quantidade depois coloco o valor unitario no campo valor total ele me retornar o valor total da quantidade * valor unitario, pra eu gravar esse valor total no banco de dados. duvida 3 preciso criar um campo na minha tabela que conte os itens tipo eu insiro um iten ele me mostra iten 1 eu insiro outro iten ele me mostra 2 e que tb eu possa gravar esses valores desses itens no banco de dados.
begin
inherited;
if key = #13 then
begin
idescricao:=deasy.CdsProdutos.FieldByName(nome).asstring;
icodigo:=deasy.CdsProdutos.FieldByName(barras).asstring;
cadastronotas.dbedit12.text:= idescricao;
cadastronotas.dbedit22.text:= icodigo; close; end;
end; criei duas variaveis globais pra armazenar o valor do campo quando eu teclo enter ela deveria armazenar o valor do campo, mais nao armazena fika em branco, quando teclo o enter fika em branco na outra tela se eu deixar ativado r o clientdataset ela so me traz o primeiro registro pelo menos foi o que pareceu, nao ta me trazendo o registro q eu to selecionado no dbgrid duvida 2 como eu faço pra calcular um valor x na tela de cadastro de um pedido pro exemplo, eu digito a quantidade depois coloco o valor unitario no campo valor total ele me retornar o valor total da quantidade * valor unitario, pra eu gravar esse valor total no banco de dados. duvida 3 preciso criar um campo na minha tabela que conte os itens tipo eu insiro um iten ele me mostra iten 1 eu insiro outro iten ele me mostra 2 e que tb eu possa gravar esses valores desses itens no banco de dados.
Paulo Silva
Curtidas 0
Respostas
Wesley Yamazack
15/12/2008
Paulo,
Boa tarde
Vamos lá :
Pergunta 1===============================================================
Pelo que entendi, você esta dizendo que o valor volta em branco, uma duvida, estas variáveis globais estão em que formulário ? 1 - Se estiverem no Form onde você seleciona o item e da o enter, acho que não iria funcionar, elas deveriam estar no formulário que você chama esta telinha de seleção. 2 – Se estiver no Form que você chama a tela de seleção, observe se em algum lugar você não esta limpando estas variáveis. Para fazer a prova dos 9, faça o seguinte. procedure Tpesquisaprodutos.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if key = #13 then
begin
idescricao:=deasy.CdsProdutos.FieldByName(nome).asstring;
icodigo:=deasy.CdsProdutos.FieldByName(barras).asstring;
cadastronotas.dbedit12.text:= idescricao;
cadastronotas.dbedit22.text:= icodigo; showmessage(‘Descricao : ’ + idescricao + ‘ Codigo : ’ + icodigo); //obs se estas variáveis forem inteiras tem de converter para + inttostr(Idescricao) e o mesmo //para icodigo; close; end;
end;
Pergunta 2===============================================================
Você pode fazer de várias maneiras,duas delas : 1 – Criar 3 variaveis [ qnt : Integer; PrecoUnit, PrecoTotal : Real ] PrecoTotal := qnt * PrecoUnit; Na hora de inserir os dados na tabela, você faz assim: deasy.CdsProdutos.FieldByName(precototal).asstring := FloatToStr(PrecoTotal); 2 – Você não precisaria gravar o Total da venda, basta gravar a quantidade e o PrecoUnitario. E a qualquer momento que você queira saber qual é o total daquela venda, faça o seguinte: PrecoTotal:=StrtoFloat(CdsProdutos.FieldByName(quantidade).asstring) * StrtoFloat(CdsProdutos.FieldByName(PretoUnit).asstring);
Pergunta3 ===============================================================
Aqui você pode criar o campo como ‘AutoIncremento’, ele será incrementado toda vez que você executar um deasy.CdsProdutos.Insert, ele irá automaticamente incluir um valor para este campo, seguindo uma ordem, onde este numero nunca se repete, e caso você apague algum item, já mais outro item terá aquele código apagado.
Att,
Wesley Yamazack
Boa tarde
Vamos lá :
Pergunta 1===============================================================
Pelo que entendi, você esta dizendo que o valor volta em branco, uma duvida, estas variáveis globais estão em que formulário ? 1 - Se estiverem no Form onde você seleciona o item e da o enter, acho que não iria funcionar, elas deveriam estar no formulário que você chama esta telinha de seleção. 2 – Se estiver no Form que você chama a tela de seleção, observe se em algum lugar você não esta limpando estas variáveis. Para fazer a prova dos 9, faça o seguinte. procedure Tpesquisaprodutos.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if key = #13 then
begin
idescricao:=deasy.CdsProdutos.FieldByName(nome).asstring;
icodigo:=deasy.CdsProdutos.FieldByName(barras).asstring;
cadastronotas.dbedit12.text:= idescricao;
cadastronotas.dbedit22.text:= icodigo; showmessage(‘Descricao : ’ + idescricao + ‘ Codigo : ’ + icodigo); //obs se estas variáveis forem inteiras tem de converter para + inttostr(Idescricao) e o mesmo //para icodigo; close; end;
end;
Pergunta 2===============================================================
Você pode fazer de várias maneiras,duas delas : 1 – Criar 3 variaveis [ qnt : Integer; PrecoUnit, PrecoTotal : Real ] PrecoTotal := qnt * PrecoUnit; Na hora de inserir os dados na tabela, você faz assim: deasy.CdsProdutos.FieldByName(precototal).asstring := FloatToStr(PrecoTotal); 2 – Você não precisaria gravar o Total da venda, basta gravar a quantidade e o PrecoUnitario. E a qualquer momento que você queira saber qual é o total daquela venda, faça o seguinte: PrecoTotal:=StrtoFloat(CdsProdutos.FieldByName(quantidade).asstring) * StrtoFloat(CdsProdutos.FieldByName(PretoUnit).asstring);
Pergunta3 ===============================================================
Aqui você pode criar o campo como ‘AutoIncremento’, ele será incrementado toda vez que você executar um deasy.CdsProdutos.Insert, ele irá automaticamente incluir um valor para este campo, seguindo uma ordem, onde este numero nunca se repete, e caso você apague algum item, já mais outro item terá aquele código apagado.
Att,
Wesley Yamazack
GOSTEI 0
Paulo Silva
15/12/2008
pois e nao deu certo continua sem armazenar so armazena quando eu vou no cdsprodutos e ativo ele pra true sendo q so me retorna o primeiro registro independente de qual eu esteja selecionado, outra coisa conferi eu declarei a variavel global na nota
var
cadastronotas: Tcadastronotas;
iunidade, icodigo, idescricao: string; implementation
uses upesprodutos;
{$R *.dfm} procedure Tcadastronotas.btnpesqClick(Sender: TObject);
begin
inherited;
try
pesquisaprodutos:=Tpesquisaprodutos.Create(self);
pesquisaprodutos.ShowModal;
finally
pesquisaprodutos.Free;
end;
end; eu preciso gravar o numero do iten que é a minha terceira duvida sendo que quando eu cadastro uma nova nota esse numero começa a recontar de novo sabe tipo item 1,2,3 etc cada nota tem seus itens todos se iniciando do valor 1 eu preciso que esses itens estajam no banco de dados estou usando firebird 2.1 mais nao consegui imaginar uma maneira de mandar esses numeros sem ter q eu prencher tipo campo numero do item eu fika prenchendo la 1 depois no proximo lançamento eu coloco 2 sabe pra evitar esse desgaste aehuhueheuae.
cadastronotas: Tcadastronotas;
iunidade, icodigo, idescricao: string; implementation
uses upesprodutos;
{$R *.dfm} procedure Tcadastronotas.btnpesqClick(Sender: TObject);
begin
inherited;
try
pesquisaprodutos:=Tpesquisaprodutos.Create(self);
pesquisaprodutos.ShowModal;
finally
pesquisaprodutos.Free;
end;
end; eu preciso gravar o numero do iten que é a minha terceira duvida sendo que quando eu cadastro uma nova nota esse numero começa a recontar de novo sabe tipo item 1,2,3 etc cada nota tem seus itens todos se iniciando do valor 1 eu preciso que esses itens estajam no banco de dados estou usando firebird 2.1 mais nao consegui imaginar uma maneira de mandar esses numeros sem ter q eu prencher tipo campo numero do item eu fika prenchendo la 1 depois no proximo lançamento eu coloco 2 sabe pra evitar esse desgaste aehuhueheuae.
GOSTEI 0
Wesley Yamazack
15/12/2008
Bom vamos lá,
Ao inves de pegar o FieldByName do clientdataset, tenta pegar assim : DataSource1.DataSet.FieldByName(‘Campo’).AsString; O que eu tinha colocado anteriormente não adiantou não ? Se possível explicar um pouco mais a duvida. Pergunta3 ===============================================================Aqui você pode criar o campo como ‘AutoIncremento’, ele será incrementado toda vez que você executar um deasy.CdsProdutos.Insert, ele irá automaticamente incluir um valor para este campo, seguindo uma ordem, onde este numero nunca se repete, e caso você apague algum item, já mais outro item terá aquele código apagado.
Ao inves de pegar o FieldByName do clientdataset, tenta pegar assim : DataSource1.DataSet.FieldByName(‘Campo’).AsString; O que eu tinha colocado anteriormente não adiantou não ? Se possível explicar um pouco mais a duvida. Pergunta3 ===============================================================Aqui você pode criar o campo como ‘AutoIncremento’, ele será incrementado toda vez que você executar um deasy.CdsProdutos.Insert, ele irá automaticamente incluir um valor para este campo, seguindo uma ordem, onde este numero nunca se repete, e caso você apague algum item, já mais outro item terá aquele código apagado.
GOSTEI 0
Paulo Silva
15/12/2008
bom dia wesley agora pegou o valor sim, o campo que eu preciso que tenha o numero do item ele e uma coluna no banco de dados q identificam a ordem do registro esse campo pode se repetir tipo se eu cadastro uma nota onde ela tem o 3 itens iten 1,2,3 quando cadastro uma outra nota ele reconta do 1 denovo talvez eu tenha entendido errado tb a sua resposta O.o
GOSTEI 0
Wesley Yamazack
15/12/2008
Paulo,
Vamos lá, alguns problemas foram resolvidos, agora o seu problema é com relação a nota.
Pelo que entendi, você tem uma nota fiscal onde ela tem um código único.
A nota ela pode ter vários itens[1,2,3,4] - Cadastrados em uma tabela produtos por exemplo.
Na tabela dos itens da nota, você irá precisar ter o código dos produtos, e o código da nota que aqueles produtos pertencem.
Não sei se seria isso o que você esta querendo. Se tiver como você esmiuçar mais o seu problema.
Att,
Wesley Yamazack
Vamos lá, alguns problemas foram resolvidos, agora o seu problema é com relação a nota.
Pelo que entendi, você tem uma nota fiscal onde ela tem um código único.
A nota ela pode ter vários itens[1,2,3,4] - Cadastrados em uma tabela produtos por exemplo.
Na tabela dos itens da nota, você irá precisar ter o código dos produtos, e o código da nota que aqueles produtos pertencem.
Não sei se seria isso o que você esta querendo. Se tiver como você esmiuçar mais o seu problema.
Att,
Wesley Yamazack
GOSTEI 0
Paulo Silva
15/12/2008
bom dia wesley consegui resolver o problema do campo da seguinte maneira agora so pra complementar qual é a maneira mais eficaz de se adicionar um registro num dataset usando objeto do tipo edit ou maskedit?
procedure TDEASY.CDSITENDETALHENewRecord(DataSet: TDataSet);
begin
cdsitendetalheNUMEROITEN.AsInteger :=
cdsitendetalhe.RecordCount+1;
end;
begin
cdsitendetalheNUMEROITEN.AsInteger :=
cdsitendetalhe.RecordCount+1;
end;
GOSTEI 0
Wesley Yamazack
15/12/2008
Paulo,
Use o Edit.
Coloque o seguinte código no evento onkeypress do seu edit:
procedure TFrmPadrao.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in [ 0..9, #8, #13]) then
Key := #0;
end;
Para que ele so consiga digitar numeros no edit. Restringindo a digitação e assim evitando que ele digite letras ou caracteres especiais.
Att,
Wesley Yamazack
Use o Edit.
Coloque o seguinte código no evento onkeypress do seu edit:
procedure TFrmPadrao.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in [ 0..9, #8, #13]) then
Key := #0;
end;
Para que ele so consiga digitar numeros no edit. Restringindo a digitação e assim evitando que ele digite letras ou caracteres especiais.
Att,
Wesley Yamazack
GOSTEI 0
Paulo Silva
15/12/2008
qual a maneira correta de inserir esses dados dos edit na tabela ?
GOSTEI 0
Wesley Yamazack
15/12/2008
Coloque um botão e no evento onclick do mesmo.
Var
vUltimoCodigo : Integer;
begin
//teu CDS ordene ele por código
cds.last; //vai para o ultimo registro.
vUltimoCodigo := cds.FieldByName(Codigo).asinteger + 1;
cds.insert;
// passe os dados do clientdataset(descricao, qnt, etc)
cds.FieldByName(Codigo).asinteger := vUltimoCodigo ;
cds.post;
end;
Var
vUltimoCodigo : Integer;
begin
//teu CDS ordene ele por código
cds.last; //vai para o ultimo registro.
vUltimoCodigo := cds.FieldByName(Codigo).asinteger + 1;
cds.insert;
// passe os dados do clientdataset(descricao, qnt, etc)
cds.FieldByName(Codigo).asinteger := vUltimoCodigo ;
cds.post;
end;
GOSTEI 0
Paulo Silva
15/12/2008
Wesley bom ja consegui fazer quase tudo que eu queria so que agora quando eu busco os registro de descricao dos produtos e codigo eles aparecem la nos dbedit certim so que se eu for prencher qualquer outro campo na tabela eles somem O.o e se eu clicar neles tb, nesse caso eu teria q colocar um edit normal? e inserir os dados na tabela? ou qual procedimento devo eu tomar?
GOSTEI 0
Wesley Yamazack
15/12/2008
Isso é normal mesmo acontecer.
Usa edit para ficar mais fácil, sacou ? Fica mais facil de controlar. Dá mais trabalho porém é mais confiável.
Só não esquece depois de der um post no clientdataset :
edt1.clear;
edt2.clear;
Garantindo assim que ele nunca irá pegar lixo de registros anteriores. sacou ?
Att,
Wesley Yamazack
Usa edit para ficar mais fácil, sacou ? Fica mais facil de controlar. Dá mais trabalho porém é mais confiável.
Só não esquece depois de der um post no clientdataset :
edt1.clear;
edt2.clear;
Garantindo assim que ele nunca irá pegar lixo de registros anteriores. sacou ?
Att,
Wesley Yamazack
GOSTEI 0
Paulo Silva
15/12/2008
boa noite wesley o problema é o seguinte eu tenho um botao btninserir que executa ds.dataset.insert e tenho tb um botao pra dar salvar que executa ds.dataset.applyupdates[0]; bom quando eu coloco o codigo que vc me disse ele faz assim
ds.dataset.insert;
DS.DataSet.FieldByName(SITUACAO).AsString:=ComboBox2.TEXT;
DS.DataSet.FieldByName(EMISSORDOCUMENTO).AsString:=ComboBox1.TEXT; ds.dataset.post; dessa forma o registro e gravado mais é gravado com o texto que estiver quando eu dou o insert e vou pra alterar colocar outro valor o registro vai pro banco de dados com o valor q estiver atualmente tipo se eu deixar combobox2.text vai esse valor pro bd automaticamente apos o insert se eu inserir no botao gravar esse valor, ele cria uma outra linha no bd bom como soluciono isso e depois como eu faço pra exibir esses registros ja gravado no form denovo tipo consulto ele no form mais ele nao me retorna o valor do combobox O.o fika vazio. sei que ja estou enchendo o sako mais tenho essa duvida ae O.o
DS.DataSet.FieldByName(EMISSORDOCUMENTO).AsString:=ComboBox1.TEXT; ds.dataset.post; dessa forma o registro e gravado mais é gravado com o texto que estiver quando eu dou o insert e vou pra alterar colocar outro valor o registro vai pro banco de dados com o valor q estiver atualmente tipo se eu deixar combobox2.text vai esse valor pro bd automaticamente apos o insert se eu inserir no botao gravar esse valor, ele cria uma outra linha no bd bom como soluciono isso e depois como eu faço pra exibir esses registros ja gravado no form denovo tipo consulto ele no form mais ele nao me retorna o valor do combobox O.o fika vazio. sei que ja estou enchendo o sako mais tenho essa duvida ae O.o
GOSTEI 0
Wesley Yamazack
15/12/2008
Boa noite,
Vamos lá. você pode fazer o seguinte.
if ((combobox1.ItemIndex > -1) and (Combobox2.ItemIndex > -1)) then
begin
ds.dataset.insert; DS.DataSet.FieldByName(SITUACAO).AsString:=ComboBox2.TEXT;
DS.DataSet.FieldByName(EMISSORDOCUMENTO).AsString:=ComboBox1.TEXT; ds.dataset.post;
combobox1.ItemIndex := -1;
combobox2.ItemIndex := -1;
cds.active := false;
cds.active := True;
end
else
begin
showmessage(Dados nao informados);
combobox1.setfocus;
end;
E com relação a esta pertubando, nao esquenta com isso não, estou aqui para te ajudar em tudo que precisar, fica tranquilo com relação a isso.
Abraço..
Wesley
Vamos lá. você pode fazer o seguinte.
if ((combobox1.ItemIndex > -1) and (Combobox2.ItemIndex > -1)) then
begin
ds.dataset.insert; DS.DataSet.FieldByName(SITUACAO).AsString:=ComboBox2.TEXT;
DS.DataSet.FieldByName(EMISSORDOCUMENTO).AsString:=ComboBox1.TEXT; ds.dataset.post;
combobox1.ItemIndex := -1;
combobox2.ItemIndex := -1;
cds.active := false;
cds.active := True;
end
else
begin
showmessage(Dados nao informados);
combobox1.setfocus;
end;
E com relação a esta pertubando, nao esquenta com isso não, estou aqui para te ajudar em tudo que precisar, fica tranquilo com relação a isso.
Abraço..
Wesley
GOSTEI 0
Paulo Silva
15/12/2008
suponhamos que eu tenha um form de cadastro de cliente
e que nele tenha os campos nome, endereço, cidade e que eu tenha 3 dbedit que armazena os mesmos
se eu usar 2combobox normal no momento que eu clico no meu botaozinho insert os dados do combobox vao pra tabela e meus dbedit entra em insert mode certo pois é eu tb tenho um outro botao que executa o ds.dataset.applyupdate que tem o nome de salvar o problema e que quando eu consulto esses mesmos dados num dbgrid ele me mostra os dados inseridos quando eu uso um botao vizualizar q vai pra tabela onde mostra os dados os dados do combobox estao vazios nao estao os dados que eu gravei na mesma tabela tentei fazer assim funciona desse jeito mais quando eu entro na tabela ela fika em insert mode eternamente O.o so sai quando eu clico no botao cancelar(ds.dataset.cancel)
procedure Tcadastronotas.ds2DataChange(Sender: TObject; Field: TField);
begin
inherited; ComboBox2.TEXT:= DS.DataSet.FieldByName(SITUACAO).asstring;
ComboBox1.TEXT:=DS.DataSet.FieldByName(EMISSORDOCUMENTO).asstring; end; no evento procedure Tcadastronotas.ds2UpdateData(Sender: TObject);
begin
inherited; DS.DataSet.FieldByName(SITUACAO).AsString:=ComboBox2.TEXT;
DS.DataSet.FieldByName(EMISSORDOCUMENTO).AsString:=ComboBox1.TEXT;
end; entao ele da o update certinho das informaçoes que estao na tabela quando eu clico no botao salvar mais quando eu vizualizo os dados nao vem igual em um dbedit sabe?
begin
inherited; ComboBox2.TEXT:= DS.DataSet.FieldByName(SITUACAO).asstring;
ComboBox1.TEXT:=DS.DataSet.FieldByName(EMISSORDOCUMENTO).asstring; end; no evento procedure Tcadastronotas.ds2UpdateData(Sender: TObject);
begin
inherited; DS.DataSet.FieldByName(SITUACAO).AsString:=ComboBox2.TEXT;
DS.DataSet.FieldByName(EMISSORDOCUMENTO).AsString:=ComboBox1.TEXT;
end; entao ele da o update certinho das informaçoes que estao na tabela quando eu clico no botao salvar mais quando eu vizualizo os dados nao vem igual em um dbedit sabe?
GOSTEI 0
Wesley Yamazack
15/12/2008
Paulo, ficou meio complexo, de entender.
Uma coisa, você esta manipulando as tabelas com os mesmos componentes ? Ex. você tem 2 CDS, um esta apontado para a grid e o outro esta controlando os combobox ? Se tiver usando isso, na hora que for gravar, os dados você precisa dar um refresh no outro cds para que ele possa ser atualizado.
Se não for isso, tem como me mandar teu fonte para eu analisar melhor ?
Att,
Wesley Yamazack
GOSTEI 0
Paulo Silva
15/12/2008
Wesley o problema nao e inserir o registro pq isso eu consigo fazer tranquilamente o problema e consultar o registro tipo eu clico na dbgrid vai estar os valores eu criei um botao chamado vizualizar esse visualizar sai da grid e entra na tabela ou seja la vai estar todos os registros da grid que eu estava selecionado certo? so que os registros que eu gravei usando o combobox nao vao estar esse e o problema sabe? tem alguma outra forma de fazer isso tipo quando eu clico em visualisar ele me mostra todos os registros nos campos da tabela sabe tipo nome no campo nome endereço no campo endereço so que o registro que eu inseri usando o combobox nao vai estar la ou os que eu usei os edit mesmo!
GOSTEI 0
Paulo Silva
15/12/2008
Esqueci de mencionar wesley estou usando dois cds um que é o master e o outro que é o detalhe eu estou tendo esse problema com o detalhe onde eu coloco os itens, eu coloquei os dbedit + os edit em cima e um dbgrid logo abaixo pra pegar os valores digitados acima.
na tabela master eu fiz assim
procedure Tcadastronotas.DsDataChange(Sender: TObject; Field: TField);
begin
inherited;
ComboBox2.TEXT:=dS.DataSet.FieldByName(SITUACAO).AsString;
ComboBox1.TEXT:=DS.DataSet.FieldByName(EMISSORDOCUMENTO).AsString;
end;
procedure Tcadastronotas.DsUpdateData(Sender: TObject);
begin
inherited;
dS.DataSet.FieldByName(SITUACAO).AsString:= ComboBox2.TEXT;
DS.DataSet.FieldByName(EMISSORDOCUMENTO).AsString:=ComboBox1.TEXT;
end; funciona perfeitamente
quando eu do apply update ela pega os valores do combobox e quando eu seleciono o registro na dbgrid esses registros sao retornados nos combobox ja no detalhe nao consigo fazer pq quando eu uso esse codigo ae substituindo os combobox pelos edit que eu quero ao passar pra um outro campo pro exemplo acontece que os meus edits ficam com o conteudo zerado O.o
que coisa sabe? tipo aquela busca eu pus pra retorna nesses mesmos edits descricao e codigo quando eu prencho qulquer outro campo ele zera o conteudo do mesmo. tentei postar uma foto mais ela e de 50k e so aceita 25k aki mais e isso ae!
procedure Tcadastronotas.DsDataChange(Sender: TObject; Field: TField);
begin
inherited;
ComboBox2.TEXT:=dS.DataSet.FieldByName(SITUACAO).AsString;
ComboBox1.TEXT:=DS.DataSet.FieldByName(EMISSORDOCUMENTO).AsString;
end;
procedure Tcadastronotas.DsUpdateData(Sender: TObject);
begin
inherited;
dS.DataSet.FieldByName(SITUACAO).AsString:= ComboBox2.TEXT;
DS.DataSet.FieldByName(EMISSORDOCUMENTO).AsString:=ComboBox1.TEXT;
end; funciona perfeitamente
quando eu do apply update ela pega os valores do combobox e quando eu seleciono o registro na dbgrid esses registros sao retornados nos combobox ja no detalhe nao consigo fazer pq quando eu uso esse codigo ae substituindo os combobox pelos edit que eu quero ao passar pra um outro campo pro exemplo acontece que os meus edits ficam com o conteudo zerado O.o
que coisa sabe? tipo aquela busca eu pus pra retorna nesses mesmos edits descricao e codigo quando eu prencho qulquer outro campo ele zera o conteudo do mesmo. tentei postar uma foto mais ela e de 50k e so aceita 25k aki mais e isso ae!
GOSTEI 0
Wesley Yamazack
15/12/2008
Boa noite,
Procura um ftp, eu uso http://www.4shared.com/, ele é muito bom, lá você pode anexar varios arquivo e é free, isso vai ajudar nestas situações.
Observa se na hora que você troca os combos por edits, você não esta esquecendo de trocar o nome do CDS tbm, ou D.S., as vezes estas pegadinhas nos pegam, tenta ver o lance do fdtp, e se tu não consegui me manda teu fonte, para resolvermos esta pendencia.
Abraço
Wesley Yamazack
Procura um ftp, eu uso http://www.4shared.com/, ele é muito bom, lá você pode anexar varios arquivo e é free, isso vai ajudar nestas situações.
Observa se na hora que você troca os combos por edits, você não esta esquecendo de trocar o nome do CDS tbm, ou D.S., as vezes estas pegadinhas nos pegam, tenta ver o lance do fdtp, e se tu não consegui me manda teu fonte, para resolvermos esta pendencia.
Abraço
Wesley Yamazack
GOSTEI 0
Paulo Silva
15/12/2008
Bom wesley ja pode fechar o chamado meu problema ja ta resolvido muitissimo obrigado suas dicas foram de grande valor.
resolvi meu problema dessa maneira
procedure Tcadastronotas.ds2DataChange(Sender: TObject; Field: TField);
begin
if ds.DataSet.State in [dsinsert, dsedit] then
begin
edit3.Text:=ds2.dataset.FieldByName(barras).AsString;
edit4.text:=ds2.dataset.FieldByName(descricao).asstring;
edit2.text:=ds2.dataset.FieldByName(un).asstring; end end dessa forma meus edit se comportam como se fossem dbedit eu posso trazer os dados neles apenas selecionando o registro e me garantindo quando a tabela estiver em state browse ela nao fique em edit pq c eu n usasse o if ela ia ficar em insert mode eternamente obrigado
begin
if ds.DataSet.State in [dsinsert, dsedit] then
begin
edit3.Text:=ds2.dataset.FieldByName(barras).AsString;
edit4.text:=ds2.dataset.FieldByName(descricao).asstring;
edit2.text:=ds2.dataset.FieldByName(un).asstring; end end dessa forma meus edit se comportam como se fossem dbedit eu posso trazer os dados neles apenas selecionando o registro e me garantindo quando a tabela estiver em state browse ela nao fique em edit pq c eu n usasse o if ela ia ficar em insert mode eternamente obrigado
GOSTEI 0
Wesley Yamazack
15/12/2008
Paulo, boa noite.
Boaaa !!! Show de bola, parabéns, que bom que pudemos te ajudar. Aguardo em um proximo chamado..
Abraço
Wesley Yamazack
Boaaa !!! Show de bola, parabéns, que bom que pudemos te ajudar. Aguardo em um proximo chamado..
Abraço
Wesley Yamazack
GOSTEI 0