valSistemasDelphi Postado Dezembro 1, 2018 Denunciar Share Postado Dezembro 1, 2018 Como eu gero Registros De Cadastro automaticamente, sem o Auto Incremento. Tipo um contador que vai contar os registros. Não achei nada na internet que me ajude. Eu estou usando o IBTABLE, eu tinha esse código mais meu pc deu problema no hd e perdi tudo! Me Parece que cria uma variavel COD, E no caso o Edit1 Recebe, não sei muito bem se e isso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 1, 2018 Denunciar Share Postado Dezembro 1, 2018 Sem usar o auto-incremento, voce deve criar uma variavel que receberá o ultimo valor de um campo numerico ou a contagem de registros da tabela use um componente Query com a sentença SQL: select Max(COD) as TotReg from Tabela ou select Count(COD) as NumReg from Tabela no primeiro caso, o ultimo valor de COD é que será pego no segundo caso, é a contagem de todos os registros com o campo COD. abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 valSistemasDelphi Postado Dezembro 2, 2018 Autor Denunciar Share Postado Dezembro 2, 2018 var contador: integer; begin contador:=Ibtable1.fieldbyname('Registro').asinteger + 1; Estou no caminho certo jhonas? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 valSistemasDelphi Postado Dezembro 2, 2018 Autor Denunciar Share Postado Dezembro 2, 2018 var contador: integer; begin Contador :=IBTable1.RecordCount; Edit1.Text := floattostr(Ibtable1.RecordCount + 1); Desta forma deu certo. \o/.. Com sua lógica que você me passou consegui montar o código, vivendo e aprendendo .! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 valSistemasDelphi Postado Dezembro 2, 2018 Autor Denunciar Share Postado Dezembro 2, 2018 Só estou com um problema quando chega no Registro 8, pula pro 10. Já coloquei open, close na tabela, REfresh, mais não resolveu Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 2, 2018 Denunciar Share Postado Dezembro 2, 2018 var contador: integer; begin Contador :=IBTable1.RecordCount; Edit1.Text := floattostr(Contador + 1); O que voce fez está correto, mas não te aconselho a usar dessa maneira, se a sua tabela for crescer muito ( tipo mais de 100.000 registros ) ... o comando RecordCount vai ficar mais lento que uma sentença SQL na Query Só estou com um problema quando chega no Registro 8, pula pro 10. isso só pode acontecer de 2 maneiras: ou voce está dando um comando append ou um insert em outra parte do código, ou está incrementando o seu contador em algum outro lugar do seu código. portanto, verifique o seu código ou use o debuger ( breakpoint ) do delphi para achar onde está o problema. abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 valSistemasDelphi Postado Dezembro 3, 2018 Autor Denunciar Share Postado Dezembro 3, 2018 Jhonas agora deu certo, valeu pelo apoio ai. \o/. tenho só uma dúvida, a respeito de gravar foto no Banco de dados, não entendi até agora a lógica disso. To vendo muito vídeo a respeito, mais cada um tem uma forma de programar, então não dá pra focar. Mais quero saber qual é a lógica. Se a foto eu gravo primeiro. E depois com outro comando eu busco a imagem no Banco. Se poder me dar essa força ai pra mim aprender. Desculpa se outro assunto, case seja necessário crio em um novo tópico, valeu \o/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 valSistemasDelphi Postado Dezembro 3, 2018 Autor Denunciar Share Postado Dezembro 3, 2018 var MS :TMemoryStream; if Opd.Execute then begin FOTO.Picture.LoadFromFile(Opd.FileName); MS := TMemoryStream.Create; try FOTO.Picture.Graphic.SaveToStream(MS); (Form2.Ibtable1.FieldByName('Foto') as TBlobField).LoadFromStream(MS); finally MS.Free; end; end; Achei esse código na internet, mais ao salvar a imagem da erro "Invalid Class Typecast" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 3, 2018 Denunciar Share Postado Dezembro 3, 2018 Amigo, quando os assuntos forem diferentes, coloque em outro tópico, pois isso facilita a busca pelo assunto ..ok ? Tenha o habito de ler a descrição de um comando para saber exatamente como ele funciona. exemplo : TMemoryStream --------------------------------------------------------------------------------------- Use TMemoryStream para armazenar dados em um buffer de memória dinâmica que é aprimorado com recursos de acesso semelhantes a arquivos. O TMemoryStream fornece os recursos gerais de I / O de um objeto de fluxo ao introduzir métodos e propriedades para gerenciar um buffer de memória dinâmica. Fluxos de memória são úteis como objetos intermediários que podem conter informações, bem como lê-las ou gravá-las em outro meio de armazenamento. Eles fornecem um formato útil para comparar o conteúdo de fluxos, ou para manipular dados armazenados em um meio menos acessível. --------------------------------------------------------------------------------------- Use LoadFromStream para copiar o conteúdo de um fluxo ( stream ) no campo BLOB. Especifique o fluxo ( stream ) a partir do qual o valor do campo é copiado como o valor do parâmetro Stream. Nota: O parâmetro Stream geralmente não é um fluxo BLOB. Fluxos BLOB (retornados pelo método CreateBlobStream do conjunto de dados) fornecem um mecanismo completamente separado para fluxo de dados em um campo BLOB. exemplo: var MS: TMemoryStream; begin if not (ClientDataSet1.State in [dsInsert, dsEdit]) then ClientDataSet1.Insert; MS := TMemoryStream.Create(); try Image1.Picture.Bitmap.SaveToStream(MS); ClientDataSet1Images.LoadFromStream(MS); finally MS.Free; end; ClientDataSet1.Post; end; OBS: O exemplo acima, vai pegar a imagem que está no componente TImage e vai salva-la na tabela do banco de dados em um campo BLOB No entanto, trabalhar com imagens em banco de dados, requer atenção, pois dependendo do tamanho da imagem, voce vai deixar muito grande o tamanho da sua tabela. Então é necessario que voce reduza o tamanho da imagem para salvar no banco exemplo: http://delphidabbler.com/tips/100 uma imagem Bitmap é muito maior que a mesma imagem em JPEG o ideal é converter o Bitmap em JPEG ou JPG, depois comprimi-la ainda mais ( até 40% do original ) sem perder a resolução, para depois salvar no banco de dados. abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 valSistemasDelphi Postado Dezembro 3, 2018 Autor Denunciar Share Postado Dezembro 3, 2018 (editado) Jhonas valeu por responde, sempre dá esse erro, "Field (Registro) must have a value o que seria ? já tentei até inserir o registro, por meio de código, mais não deu certo. Fiz algumas pesquisas, conforme esse erro, vi o pessoal dizendo para Selecionar o Registro Da Tabela, e ir na propriedade "Required" para False, a ele abre o openDialog não dá o erro, mais não salva nada. Como se não tivesse nenhum código. Editado Dezembro 3, 2018 por valSistemasDelphi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 3, 2018 Denunciar Share Postado Dezembro 3, 2018 erro: "Field (Registro) must have a value Campo (Registro) deve ter um valor Como não sei como está o seu código, não tenho como te ajudar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 valSistemasDelphi Postado Dezembro 3, 2018 Autor Denunciar Share Postado Dezembro 3, 2018 (editado) só e gerado um valor, quando eu cadastro um novo cadastro. Nesse caso será necessário uma rotina tipo +1, ou só para salvar um registro. O que você me diz Editado Dezembro 3, 2018 por valSistemasDelphi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 4, 2018 Denunciar Share Postado Dezembro 4, 2018 Agora voce percebeu o seu erro ... o contador deve ser somado a ele mesmo + 1 todas as vezes não te avisei antes, porque queria que voce entendesse a lógica de se criar um contador var contador: integer; begin Contador :=IBTable1.RecordCount; Contador := Contador + 1; Edit1.Text := floattostr(Contador); abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 valSistemasDelphi Postado Dezembro 4, 2018 Autor Denunciar Share Postado Dezembro 4, 2018 Confesso que estava quase desistindo mais Depois de muito esforço consegui resolver o meu problema. Solução: 1º Criei um Button que o código dele serve para, armazenar o caminho Da Foto, para um campo, no Banco De Dados" com todos os fields da Tabela o usuário faz o cadastro primeiro e Depois escolhe a Foto. E Posta no Banco para gravar. 2º No Evento, DBGrid1DrawColumnCell . // Aqui ele permite mudar de fotos a cada registro atualizado. if IBTable1FOTO.Value <> '' then // Se o campo Foto for diferente de vazio begin foto.Visible:=true; foto.Picture.LoadFromFile(IBTable1FOTO.Text); end else foto.Visible:=false; 3º No FormCreat joguei este código. // Atualiza em tempo Real. if ibtable1foto.Value <> '' then begin foto.Visible:=true; foto.Picture.LoadFromFile(Ibtable1foto.Text); end else foto.Visible:=false; Espero ter sido Claro a respeito. Jhonas valeu parceiro pelas Dicas. \o/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
valSistemasDelphi
Como eu gero Registros De Cadastro automaticamente, sem o Auto Incremento.
Tipo um contador que vai contar os registros. Não achei nada na internet que me ajude.
Eu estou usando o IBTABLE, eu tinha esse código mais meu pc deu problema no hd e perdi tudo!
Me Parece que cria uma variavel COD, E no caso o Edit1 Recebe, não sei muito bem se e isso.
Link para o comentário
Compartilhar em outros sites
13 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.