[firebase-br] Auto Incremento

Paulo Portella pportellaa em hotmail.com
Sáb Abr 21 19:16:16 -03 2007


Sim, eu sei disso, o codigo que passei, foi apenas pra dar uma ""ideia"" pra ele.
Quanto a usar Generator/Triggers, tambem eh uma otima, e no caso dele, soh parece ser a "unica" solucao.
Mas voltarah ao caso de o EXE ter que fazer um ""Refresh"", (nas outras estacoes), pra "tambem" atualizar-se.
Quanto a 1a.opcao, nao tem nada a ver com EXE nem com o BD. Eh soh um conceito de que na Natureza nada se perde.? sim, se perde sim, e eh por isso que tem-se que ter muito cuidado em usar DELETE.
Pra cada caso (projeto) tem-se que encontrar uma melhor "atitude", e nele, o uso de Generator, eh sim a melhor opcao.
[]s a todos.
Pportellaa.



> Date: Sat, 21 Apr 2007 19:09:49 -0300> From: rdeggau em gmail.com> To: lista em firebase.com.br> Subject: Re: [firebase-br] Auto Incremento> > Paulo,> > isso depende do conceito que vai ser usado no sistema; SE o seu> sistema NUNCA terá exclusão de registros, como voce propoe, a 1ª> opção pode funcionar;> a 2ª pode provocar erro no caso de 2 ou mais usuarios simultaneamente> estarem inserindo um registro: os 2 terão o mesmo codigo e provocará> erro.> > Mas este assunto está fugindo da lista; para o Firebird a "melhor" e> mais segura solução é usar GENERATOR disparado por uma trigger no> insert, o que garantirá a consistencia dos teus dados> > Renato Deggau> > On 4/21/07, Paulo Portella <pportellaa em hotmail.com> wrote:> > Mais uma vez peco humildes desculpas aos moderadores da lista:> >> > Gente, Informacao nunca eh demais, entao pq nao resolvemos isso evitando-se o DELETE da tabela. ?Ha casos e ""casos"" pra isso, mas em sua maioria uma opcao seria->Marca-lo como Ativo/Inativo, fazendo assim, a informacao (registro na tabela) continuarah lah, apenas Inativado.> >> > Odeio essa expressao-> DELETAR/APAGAR.> > Lembre-se Quem tem UM Tem Nenhum, Quem tem Dois "talvez" tem Um.> >> > Enfim. Existem opcoes, Se ele quer fazer isso de dentro do executavel, entao segue exemplo:> > 1a.Opcao)> >> > Evento OnNewRecord da tabela:dm.cdsclientesCODIGO.Value:=dm.cdsClientes.RecordCount+1; -> Caso ele aceite a opcao de NAO DELETAR o registro, apenas marca-lo como Ativo/Inativo> >> >> > 2a.Opcao)> > uma funcao pra "acharr" o valor do campo em questao:> > var> > NovoCodigo : Integer;> > IndiceAtual : String;> > begin IndiceAtual:=dm.cdsClientes.IndexFieldNames;> > dm.cdsClientes.IndexFieldNames:='CODIGO'; dm.cdsClientes.Last; NovoCodigo:=dm.cdscdsClientesCODIGO.Value+1;> > dm.cdsClientes.IndexFieldNames:=IndiceAtual;> > end;> >> > []s a todos> > Pportellaa.> >> >> >> > > Date: Sat, 21 Apr 2007 15:38:55 -0300> From: rdeggau em gmail.com> To: lista em firebase.com.br> Subject: Re: [firebase-br] Auto Incremento> > Reijanio:> > suponha que voce tenha cadastrado 5 clientes (1,2,3,4 e 5); dai pela> identificacao de que o cliente 4 náo deveria ter sido cadastrado, voce> o exclui - agora voce tem 4 clientes; posteriormente vai incluir um> novo cliente; pelo seu codigo ele receberia o codigo 5 e este já> existe no sistema o que provocaria violaçao de chave primaria> > Renato Deggau> > On 4/20/07, Reijanio Nunes Ribeiro <rnribeiro em gmail.com> wrote:> > se vc usar direto no evento onnewrecord no clientdataset n seria mais facil> > não?> > ClientesIDcli.value := clientes.recordcount + 1> >> > Em 20/04/07, Marcelo Castro - [www.ligteltelecom.com.br] <> > marcelo.castro em ligteltelecom.com.br> escreveu:> > >> > > Amigos;> > >> > > Eu estou usando um generator para criar auto incremento.> > >> > > Seria possível fazer eu fazer esse auto incremento direto no banco.> > >> > > Porém estou usando uma query para isso.> > >> > > Estou fazendo assim pelo delphi.> > >> > > procedure TDM_Server.DspProdutosBeforeUpdateRecord(Sender: TObject;> > > SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;> > > UpdateKind: TUpdateKind; var Applied: Boolean);> > > begin> > > IF UpdateKind = ukInsert THEN> > > BEGIN> > > if SourceDS = QryProdutos THEN> > > BEGIN> > > QryGenProdutos.OPEN;> > >> > > TRY> > > FNUMPROD := QryGenProdutos.fieldbyname> > > ('PROD_CODIGO_NOVO').AsInteger;> > > finally> > >> > > QryGenProdutos.Close;> > >> > > end;> > > DeltaDS.fieldbyname('PROD_CODIGO').NewValue := FnumPROD;> > >> > > end;> > > end;> > > end;> > > ______________________________________________> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br> > > Para editar sua configuração na lista, use o endereço> > > http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa> > >> > ______________________________________________> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br> > Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa> >> > ______________________________________________> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br> Para consultar mensagens antigas: http://firebase.com.br/pesquisa> > _________________________________________________________________> > O Windows Live Spaces já chegou! É fácil criar o seu próprio Web site pessoal.> > http://spaces.live.com/signup.aspx> > ______________________________________________> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br> > Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa> >> > ______________________________________________> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
_________________________________________________________________
Procure em qualquer página Web com protecção eficaz. Obtenha já o Windows Live Toolbar GRATUITO!
http://www.toolbar.live.com


Mais detalhes sobre a lista de discussão lista