tetel 0 Denunciar post Postado Novembro 21, 2006 tenhu um cadastro de venda e tenhu uma tabela que seriaitens_compra com o cod_itens e cod_equipamento pra uma loja de informaticaa cada cod_equipamento ele gera altomatico o cod_itens para nao da o erro de antesque foi bem chatinhu pra arruma so qeu tipo ele so gera o cod_itens se eu de o ApplyUpdatesmas o ApplyUpdates eu so doh no botao gravar pq se eu de direto ele nao iria cancelairia grava de uma veis, entao como posso fase o botao cancela ou se há um jeito de dar o ApplyUpdates no botao grava Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2006 Desculpa, mas não entendi a sua dúvida, poderia esclarecer em qual a tabela deseja fazer este controle ? É na itens_compra ? Ficou um pouco confuso... Compartilhar este post Link para o post Compartilhar em outros sites
tetel 0 Denunciar post Postado Novembro 21, 2006 Desculpa, mas não entendi a sua dúvida, poderia esclarecer em qual a tabela deseja fazer este controle ? É na itens_compra ? Ficou um pouco confuso...seria na tabela itens_compraantes eu tava com problema pq se eu botace o codigo repetido ele dava errode chave primaria certoagora pra isso nao acontece eu botei para gera um codigo de item a cadaproduto qeu ele coloca gera um codigo de item so que para ele gera esse codigotenhu que da o ApplyUpdates isso seria num cadastro de vendas daih tenhu o codigo de venda tambemno codigo ta assimif (DSITEQ.State = dsinsert) tHENbegin DM.SQLAux.Close; DM.SQLAUX.CommandText := ''; DM.SQLAUX.CommandText:='SELECT MAX(COD_ITEM_E) FROM ITENS_PED_EQUI'; DM.SQLAUX.Open; CDSITEQCOD_ITEM_E.AsInteger :=DM.SQLAux.FIELDBYNAME('MAX').AsInteger + 1; CDSITEQ.Post; CDSITEQ.Append; DBGridItEq.SelectedIndex := 0; CDSItEqCOD_PED.Value := CDSCOD_PED.Value ;end;e o ApplyUpdates eu soh do no botao grava, isso aih tah no onkeypress da dbgrid Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2006 Faz no evento OnNewRecord da sua tabela... Ali você pode fazer a busca e a atribuição do valor, algo do tipo no OnNewRecord: DM.SQLAux.Close;DM.SQLAUX.CommandText := '';DM.SQLAUX.CommandText:='SELECT MAX(COD_ITEM_E) FROM ITENS_PED_EQUI';DM.SQLAUX.Open;CDSITEQCOD_ITEM_E.AsInteger :=DM.SQLAux.FIELDBYNAME('MAX').AsInteger + 1;CDSItEqCOD_PED.Value := CDSCOD_PED.Value; Compartilhar este post Link para o post Compartilhar em outros sites
tetel 0 Denunciar post Postado Novembro 21, 2006 Faz no evento OnNewRecord da sua tabela... Ali você pode fazer a busca e a atribuição do valor, algo do tipo no OnNewRecord: DM.SQLAux.Close;DM.SQLAUX.CommandText := '';DM.SQLAUX.CommandText:='SELECT MAX(COD_ITEM_E) FROM ITENS_PED_EQUI';DM.SQLAUX.Open;CDSITEQCOD_ITEM_E.AsInteger :=DM.SQLAux.FIELDBYNAME('MAX').AsInteger + 1;CDSItEqCOD_PED.Value := CDSCOD_PED.Value; se eu num de o ApplUpdates ele nao gera um novo codigoele sempre pega o mesmo se bota o ApplyUpdates aih sim ele somaria mais 1será que se eu dechace com o ApplyUpdates ali e fisece uma rotina no botao cancelapara elimina no caso se o clientdataset tivece em modo insert para deleta o novo codigofuncionaria? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2006 Colocando o ApplyUpdates ali estaria errado, pois ali é quando se pede para inserir um novo item na tabela, o que não entendo é porque de nao funcionar para você, sempre faço desta forma e nunca tive problemas... o applyupdates vai servir somente para depois confirmar a gravação. No caso tb não sei como esta montando o relacionamento da sua tabela, sendo que se estiver relacionando o item e o código da mestre, pode mudar um pouco o comando, fazendo assim: DM.SQLAux.Close;DM.SQLAUX.CommandText := '';DM.SQLAUX.CommandText:='SELECT MAX(COD_ITEM_E) FROM ITENS_PED_EQUI WHERE COD_PED = ' + IntToStr(CDSCOD_PED.Value);DM.SQLAUX.Open;CDSITEQCOD_ITEM_E.AsInteger :=DM.SQLAux.FIELDBYNAME('MAX').AsInteger + 1;CDSItEqCOD_PED.Value := CDSCOD_PED.Value; Para assim somente buscar o próximo código de item do registro em questão... Compartilhar este post Link para o post Compartilhar em outros sites
tetel 0 Denunciar post Postado Novembro 21, 2006 Colocando o ApplyUpdates ali estaria errado, pois ali é quando se pede para inserir um novo item na tabela, o que não entendo é porque de nao funcionar para você, sempre faço desta forma e nunca tive problemas... o applyupdates vai servir somente para depois confirmar a gravação.No caso tb não sei como esta montando o relacionamento da sua tabela, sendo que se estiver relacionando o item e o código da mestre, pode mudar um pouco o comando, fazendo assim: DM.SQLAux.Close;DM.SQLAUX.CommandText := '';DM.SQLAUX.CommandText:='SELECT MAX(COD_ITEM_E) FROM ITENS_PED_EQUI WHERE COD_PED = ' + IntToStr(CDSCOD_PED.Value);DM.SQLAUX.Open;CDSITEQCOD_ITEM_E.AsInteger :=DM.SQLAux.FIELDBYNAME('MAX').AsInteger + 1;CDSItEqCOD_PED.Value := CDSCOD_PED.Value;Para assim somente buscar o próximo código de item do registro em questão...ali seria 1 pra muitos antes eu botava que itens_venda era dependente daih agora eu mudeio erro dá por causa de repitiçoes da chave primaria e esse codigo deveria fase toda hora que um novo codigo do produto é adicionado Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2006 Da forma que lhe passei, deve de dar certo, visto que este evento OnNewRecord esta ligado na tabela de itens, e sempre que adicionar um novo item ele busca o valor maior e incrementa mais um, sendo assim não tem como duplicar registro... Compartilhar este post Link para o post Compartilhar em outros sites
tetel 0 Denunciar post Postado Novembro 21, 2006 Da forma que lhe passei, deve de dar certo, visto que este evento OnNewRecord esta ligado na tabela de itens, e sempre que adicionar um novo item ele busca o valor maior e incrementa mais um, sendo assim não tem como duplicar registro...ele vai e passa laso que ele nao soma tipo ele pega o ultimo valor tipo 5depois ele passa ali de novo e nao soma pra 6continua 5 cod_intem := 1 e cod_produto := 1cod_intem := 2 e cod_produto := 1 no caso seria + o - isso que seria pra ele fase certo?para nao da o erro Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2006 Deveria de fazer isto, no caso quando ele vai para o novo registro, o anterior já foi salvo, certo ? Compartilhar este post Link para o post Compartilhar em outros sites
tetel 0 Denunciar post Postado Novembro 21, 2006 Deveria de fazer isto, no caso quando ele vai para o novo registro, o anterior já foi salvo, certo ?no caso isso seria na dbgrid ele ia gerando altomatico so com o post no caso o registro mesmo nao teria sido salvo ainda Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2006 Sim... Mas o que importa é o registro da tabela item, pois neste estando salvo ele deve de pegar corretamente o próximo... Outro local se quiser pode colocar a função para pegar o próximo código é no evento OnBeforePost desta tabela item, onde que somente antes verifica se o estado da tabela esta em dsInsert, caso esteja busca o próximo código. Compartilhar este post Link para o post Compartilhar em outros sites
tetel 0 Denunciar post Postado Novembro 21, 2006 Sim... Mas o que importa é o registro da tabela item, pois neste estando salvo ele deve de pegar corretamente o próximo... Outro local se quiser pode colocar a função para pegar o próximo código é no evento OnBeforePost desta tabela item, onde que somente antes verifica se o estado da tabela esta em dsInsert, caso esteja busca o próximo código.mas se eu salva a tabela item equipamento salva o reto tuduestou usando pelo datasetfield usando um sql principal e os outros ligado na datasource Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2006 No caso somente vai salvar aquele item que esta sendo inserido, e não tudo... Compartilhar este post Link para o post Compartilhar em outros sites
tetel 0 Denunciar post Postado Novembro 21, 2006 No caso somente vai salvar aquele item que esta sendo inserido, e não tudo...agora ele ta gerando os numero certinhusalva o item_equipamento gera outromas so que se eu cancela nao adiantaele salva a mesma coisa e gera um codigo de vendapor isso qeu eu tava tentando num fase daquele jeito alimas vlw aih pela ajudadesculpa se encomodei de mais =] Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2006 Realmente, para isto você terá de criar um controle para quando desejar cancelar, visto que isto é do DBGrid mesmo... Compartilhar este post Link para o post Compartilhar em outros sites
tetel 0 Denunciar post Postado Novembro 21, 2006 Realmente, para isto você terá de criar um controle para quando desejar cancelar, visto que isto é do DBGrid mesmo...vo ve aqui mas vlw mesmobrigadao aee :D Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2006 Certo... Valew... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites