ZueRa 0 Denunciar post Postado Março 3, 2009 Olá amigos. Estou querendo adicionar informações sobre determinado cliente, sem mudar o código (autoincrement) dele. Exemplo: tenho fulano cadastrado com o código 5. O usuário acha o cliente que ele quer adicionar alguma informação, achado este, clica em NOVO para adicionar algum comentário. O problema: quando clico em NOVO eu tenho que incluir OUTRO cliente com o MESMO nome para adicionar algo sobre ele. Estou tentando pensar aqui, mas, não encontro uma solução viável para eu poder fazer isso. Alguém pode dar uma idéia? Desde já agradeço, Thiago. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Março 3, 2009 Porque não põe um botão editar e dá um update no registro ao gravar os dados??? []'s Compartilhar este post Link para o post Compartilhar em outros sites
ZueRa 0 Denunciar post Postado Março 3, 2009 Porque não põe um botão editar e dá um update no registro ao gravar os dados??? []'s Deixa eu explicar melhor a situação: preciso que o usuário adicione observações para um cliente fulano. Para isto tenho um campo DBMemo. Porém, ao selecionar o cliente X ele retorna observações adicionadas anteriormente neste Memo. Quero que tenha um DBMemo limpo, que preserve as informações anteriores. Por exemplo: ao eu clicar no botão NOVA OBSERVAÇÃO quero que ele mantenha o usuário selecionado mas, que eu possa adicionar novas informações, sejam duas, três, quatro vezes para o MESMO cliente (fulano). Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Março 4, 2009 Um update num registro sempre substitui o que está gravado neste campo pelas informações que você está passando para ele naquele instante. Não vejo porque você não quer carregar os dados anteriores no memo para permitir sua edição... em todo caso, isso não importa pra mim. Agora, o que você quer fazer vai depender de como está codificando para funcionar. Para o que quer fazer, na hora que carregar os dados para edição, você terá que jogar os dados do memo em alguma variável e, antes de jogar os dados no update, concatenar esta string aos dados digitados no memo e ai jogar esta variável string para o update. E todos seus problemas se acabaram!! E por favor, não venha usar destaque em posts como o seu último, pois você não deixou claro seu problema no primeiro post ok? Formule-os melhor para que as informações possam ser mais precisas. []'s Compartilhar este post Link para o post Compartilhar em outros sites
Elisei 0 Denunciar post Postado Março 4, 2009 Bom dia. Concordo com o Chronos. Não destaue citações de outras pessoas se você não esclareceu de fato sua dúvida. Ainda mais se for um moderador. Isto indica que já uma pessoa mais experiente. Mas acredito que se problema se resolverá se voce reestruturar seu sistema. A maneira mais recomendável, pe que voce tenha duas tabelas que se relacionem de maneira 1 para N, por exemplo: tabela clientes codigo_cliente nome_cliente tabela clientes_complementar codigo_cliente sequencia_observacao (pode ser um sequencial ou um datetime - se quiser controlar a ordem de inclusão) texto_observacao Monte sua estrutura de modo que ao preencher seu formulário a rotina irá gravar informações na tabela clientes Caso ainda queira adicionar mais observações para o cliente em questão, no evento onClick do botão Nova Observação, monte sua query de modo a gravar os dados na tabela clientes_complementar (pegue o codigo do cliente que está no seu edit + a observação) Desta forma, como falei no início, voce terá uma relação entre tabelas 1 para N Do jeito que voçe está tentando fazer, não há solução viável, a não ser que você grave as mesmas informações para cada observação diferente. isto, é redundância de dados, e causará sobrecarga do teu gerenciador e lentidão nos processos do teu sistema. Abraços. Espero ter ajudado. Compartilhar este post Link para o post Compartilhar em outros sites
ZueRa 0 Denunciar post Postado Março 4, 2009 Entendi Elisei. No casso este código em ambas as tabelas seriam autoincrement (+) e o Key marcado? Sobre o destaque lá no post, me desculpem, porém, eu não destaquei fazendo referência ao não entendimento do Chrnos e sim, à minha má explicação da situação, apenas quis esclarecer os fatos. De qualquer forma como dito acima, me desculpe. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Março 5, 2009 Acho que nesse caso, você poderia por na tabela clientes o campo codigo_cliente como um incremental e chave e na tabela clientes_complementar você usaria uma chave dupla, que seria o codigo_cliente e a seq_observacao, de modo que só ocorreria violação de chave se você tentasse inserir duas vezes o mesmo código do cliente com a mesma seq_observacao (caso não deixe este segundo campo como um autoincremento). []'s Compartilhar este post Link para o post Compartilhar em outros sites
Elisei 0 Denunciar post Postado Março 5, 2009 Boa tarde. Exatamente como o Chrnos colocou. Na tabela principal, existirá apenas um registro cujo código como preferir, pode ser um tipo incremental primary key Já na segunda tabela (complementar), como existirão N registros, o codigo do cliente deverá estar com a mesma definição da tabelas principal (interger por exemplo) porém não inclremental, pois haverá uma incidência para cada ocorrência. Caso voce decida controlar o ordem das observações, voce poderá optar tanto por datetime ou por um contador sequencial. Neste caso ficaria desta forma sua tabela: TABELA clientes cod_cliente integer(4) not null autoicrement TABELA clientes_complementar cod_sequencia integer(4) not null autoincrement cod_cliente integer(4) not null texto_observacao varchar(xxx) Seria mais ou menos isso. Espero que tenha sucesso! Abraço Compartilhar este post Link para o post Compartilhar em outros sites