ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Populando ListBox com info. do banco.
Ir à página 1, 2, 3  Próximo
 
Novo Tópico   Este Tópico está Bloqueado. Você não pode editar mensagens ou responder    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Djarum
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011
Mensagens: 296

MensagemEnviada: Ter Jan 17, 2012 2:58 pm    Assunto: Populando ListBox com info. do banco. Responder com Citação

Falai pessoal do Active Delphi,

Em ordem?

Bom, preciso de um auxílio da galera que manja rs

Eu até imagino que seja besteira, mas não consegui fazer sozinho, por isso estou pedindo um auxílio de vocës.

Tenho um TabControl e nele, diversos campos que são 'populados' com informações do banco. Está funcionando perfeitamente até aqui; rs
Agora, me surgiu a necessidade de guardar mais informações em um campo do tipo Blob; Estou usando Paradox pra guardar somente algumas informações. O que acontece? Como não conheço nada de campos Blob, criei um no banco, do tipo Blob Binary e, no formulário, quando peço pra salvar, uso o comando:
Código:

for I := 0 to LstBxDiretorios.Items.Count - 1 do
                begin
                  Dm1.Tab_Tarefa.FieldByName('Diretorio').Value := LstBxDiretorios.Items[I];
                  end;
                  DM1.Tab_Tarefa.Post;


Inicialmente salva, mas depois, SOME! Estou fazendo algo errado? Nunca mexi com campos deste tipo, estou aprendendo agora...

Queria saber se falta algum macete ou se, de repente, trocando o componente ListBox por um DBListBox resolva o problema; Fiz a troca e não resolveu (ligando o DBListBox ao banco).

Fico no aguardo galera,

Um abraço@
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Ter Jan 17, 2012 3:03 pm    Assunto: Responder com Citação

Amigo já vou lhe dizendo que tipos blob são para fluxos de stream, bons para gravar dados binários, mas se deseja gravar strings, recomendo varchar(), a depender do seu banco de dados.

Além do mais campos blob não são indexáveis.



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Djarum
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011
Mensagens: 296

MensagemEnviada: Ter Jan 17, 2012 3:06 pm    Assunto: Responder com Citação

Huuum,

Como eu faria nesse caso? Criaria o campo como Varchar pelo Database?

Não entendi como migrar o tipo do campo...

Valeu pela dica e pela agilidade amigo Johnny-walker;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
felipecaputo
Colaborador
Colaborador


Registrado: Quinta-Feira, 13 de Mai de 2010
Mensagens: 1719
Localização: Florianópolis / SC

MensagemEnviada: Ter Jan 17, 2012 3:43 pm    Assunto: Responder com Citação

Amigo, se você observar a linha:

Código:
Dm1.Tab_Tarefa.FieldByName('Diretorio').Value := LstBxDiretorios.Items[I];


vai perceber que está sobrescrevendo o valor do campo a cada passada do loop, para concatenar devera usar o valor atual do campo primeiro.

Código:
Dm1.Tab_Tarefa.FieldByName('Diretorio').Value := Dm1.Tab_Tarefa.FieldByName('Diretorio').Value + LstBxDiretorios.Items[I];

_________________
if Post.State = psResolvido then
Post.Caption := Post.Caption + ' [RESOLVIDO]';
_____________________________________________
O único homem que está isento de erros, é aquele que não arrisca acertar. Albert Einstein
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
Djarum
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011
Mensagens: 296

MensagemEnviada: Ter Jan 17, 2012 3:55 pm    Assunto: Responder com Citação

Man,

Testei aqui e, sinceramente, não sei onde estou errando! Não está sendo salvo corretamente no banco;
Por exemplo: Coloquei um DbNavigator pra 'navegar' entre os registros no formulário. O SW mostra corretamente os registros, mas no Listbox, permanece o último registro que coloquei. Porque isso acontece?

O Listbox não acompanha os registros?

Estou errando em algum lugar?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Djarum
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011
Mensagens: 296

MensagemEnviada: Qua Jan 18, 2012 9:14 am    Assunto: Responder com Citação

Alguém galera?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Djarum
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011
Mensagens: 296

MensagemEnviada: Qui Jan 19, 2012 9:29 am    Assunto: Responder com Citação

Galera,

Bom dia.

Como ainda não obtive respostas, ainda não consegui fazer o ListBox ser gravado no banco.
Troquei e coloquei um DBListBox e na tabela, um campo do tipo String; Não consigo de forma alguma, mesmo executando:
Código:

Tabela.post;

Gravar as informações na tabela.
O que tenho feito de errado?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Qui Jan 19, 2012 10:15 am    Assunto: Re: Populando ListBox com info. do banco. Responder com Citação

Djarum escreveu:
Inicialmente salva, mas depois, SOME! Estou fazendo algo errado? Nunca mexi com campos deste tipo, estou aprendendo agora...


A pricipio depedendo do que voce esta utilizando para acessar o banco
o simples fato de dar um post não significa que esses dados são
persistidos.. Ate mesmo Com um ApplayUpdates pode ocorrer Exceção
silenciosa

Voce esta utilizando ( componentes de acesso , tecnologia aplicada ,
Banco de dados etc... )

O que voce pretende a principio é muito simples .. é apenas algum detalhe
_________________
http://marcosalles.wordpress.com

Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Djarum
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011
Mensagens: 296

MensagemEnviada: Qui Jan 19, 2012 11:23 am    Assunto: Responder com Citação

Obrigado marcosalles pela dica;

Bom, O banco em si é formado por 3, 4 tabelas, que serviram de base pra informações simples dentro do sistema. Estou usando tabelas em Paradox, até pela facilidade no manuseio da mesma, pra guardar essas infos.

Pra acessar o banco, estou usando um TTable (Aba BDE) e conectando através da propriedade DatabaseName.

Engraçado é que coloquei esse DBListBox no formulário onde existem outros componentes que estão ligados ao banco (Através da propriedade DataSource/DataField - Edits e checkBox's) e estão gravando corretamente, e consigo até visualizá-los, passando um a um, com o DBNavigator, já o DBListBox continua no último registro que gravei.

Entendeu?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Qui Jan 19, 2012 12:26 pm    Assunto: Responder com Citação

Primeiro lugar muita calma nesta Hora..

Ja foi dito para voce que seu codigo inicial e não vi ate omomento voce
modifica-lo esta com um erro de lógica


Citação:
Amigo, se você observar a linha:

Código:
Dm1.Tab_Tarefa.FieldByName('Diretorio').Value := LstBxDiretorios.Items[I];


vai perceber que está sobrescrevendo o valor do campo a cada passada do loop, para concatenar devera usar o valor atual do campo primeiro.

Código:
Dm1.Tab_Tarefa.FieldByName('Diretorio').Value := Dm1.Tab_Tarefa.FieldByName('Diretorio').Value + LstBxDiretorios.Items[I];


Em primeiro Lgar tem que corrigir isto ai , pois voce so esta salvando o
Ultimo valor do LstBxDiretorios.Items[I] , ja que do jeito que voce postou
inicialmente e colocado pelo colegado forum voce sobrescre o Dado
_________________
http://marcosalles.wordpress.com

Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Djarum
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011
Mensagens: 296

MensagemEnviada: Qui Jan 19, 2012 12:32 pm    Assunto: Responder com Citação

Então man, esse teste eu já fiz e não funcionou.

Veja:
Código:

for I := 0 to DbLstBxDiretorios.Items.Count - 1 do
                begin
                  Dm1.Tab_Tarefa.FieldByName('Diretorios').Value := Dm1.Tab_Tarefa.FieldByName('Diretorios').Value + DbLstBxDiretorios.Items[I];
                end;


E dessa forma também não funcionou.

Não sei o que fazer...

Gostaria mesmo de entender como salvar cada registro da tabela, com suas informações do DbListBox.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Sex Jan 20, 2012 3:11 pm    Assunto: Responder com Citação

Vao resolver isto ai Vão ???

Vamos ver se eu entendi

Voce que guadar informaçoes em um campo

Essa informaçoes vem de um LstBxDiretorios

A pergunta é :

1) Quem é esse LstBxDiretorios ??

2) essas informaçoes que tem no LstBxDiretorios são fixas ?

3)A idéia é varrer este LstBxDiretorios e guardar essas informaçoes
no campo Diretorio definido como sendo Blob Binary na tabela do
Paradox

4)Como voce apos ter salvo essas informaçoes desse campo
Via o que ???

5)Faz muito tempo que não faço nada em Padadox , desde que veio
o MyBase do clientdataSet prefiro usa-la para pequenas aplicaçoes
Mas se o que voce guarda neste campo Blob Binary e puramente String
e voce esta optando por campodeste tipo devido ao Tamanho seria
isto ???

6) Eu não tenho ceerteza , mas acho que deve ter alguma rotina
para leitura e gravação de campo blobs para ler e escrever String
Não ??? Ou este acesso é Imediato no Paradox ???? *** Dúvida ***

7) enfim tente ler e escrever detalhamente cada passos deste relátorio
e tente ser mais detlhado possivel. acho que seu problema muito
simples , para um forum de excelente nível ainda não ter te dado
o suporte necessário . O maior problema é que quase ningumem
esta mais familariazado com Padadox
_________________
http://marcosalles.wordpress.com

Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Djarum
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011
Mensagens: 296

MensagemEnviada: Sex Jan 20, 2012 3:42 pm    Assunto: Responder com Citação

1) Quem é esse LstBxDiretorios ??
LstBxDiretorios é um DBListBox que irá mostrar os registros de cada registro da tabela.

2) essas informaçoes que tem no LstBxDiretorios são fixas ?
Não, cada registro da tabela terá suas informações no DbListBox.
Cada registro da tarefa, como se fosse um cadastro de clientes. Tenho o código do cliente, nome, endereço, tals.. se tivesse um campo de observações. É essa a lógica que estou tentando montar.


3)A idéia é varrer este LstBxDiretorios e guardar essas informaçoes
no campo Diretorio definido como sendo Blob Binary na tabela do
Paradox
Sim. Na tabela, tem um campo chamado Diretorios, que cada cliente (Exemplo), terá. O Cliente A terá os diretórios 1,2 e 3, o cliente B, terá o diretório 4, e assim por diante. No banco está como blob binary sim.

4)Como voce apos ter salvo essas informaçoes desse campo
Via o que ???
Cada vez que abrir um novo registro na tabela, vou disponibilizar esse mesmo DbListBox (Ele fica numa aba do cadastro) para cada cliente, ou seja: Cada vez que eu listar os clientes, vou ver as informações de CADA UM no DbListBox. Esse DbListBox vai mostrar, também vai adicionar e remover do cadastro.

5)Faz muito tempo que não faço nada em Padadox , desde que veio
o MyBase do clientdataSet prefiro usa-la para pequenas aplicaçoes
Mas se o que voce guarda neste campo Blob Binary e puramente String
e voce esta optando por campodeste tipo devido ao Tamanho seria
isto ???
Então, estou usando esse campo devido o tamanho, porque cada Cliente (Exemplo) terá seus 10, 20, 30, 100 diretórios. Lembrando, é um exemplo.

6) Eu não tenho ceerteza , mas acho que deve ter alguma rotina
para leitura e gravação de campo blobs para ler e escrever String
Não ??? Ou este acesso é Imediato no Paradox ???? *** Dúvida ***
Então, para todos os campos, estou usando uma conexão direta TTable. Para o campo Blob, não sei como fazer =/

7) enfim tente ler e escrever detalhamente cada passos deste relátorio
e tente ser mais detlhado possivel. acho que seu problema muito
simples , para um forum de excelente nível ainda não ter te dado
o suporte necessário . O maior problema é que quase ningumem
esta mais familariazado com Padadox

Acho que tenho dificuldade em me expressar rs só pode rs
A galera desse fórum é show, muitas, ou todas as vezes que postei, sempre tive ótimas respostas; Deve ser eu o problema para explicar rs
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Sex Jan 20, 2012 4:01 pm    Assunto: Responder com Citação

Alem do DElphi tem també o entendimento

Na minha concepção , parece ter uma Redundância no Seu Raciocineo

Como voce mesmo diz :

Citação:
O Cliente A terá os diretórios 1,2 e 3, o cliente B, terá o diretório 4, e assim por diante. No banco está como blob binary sim.
l

Então tem a tabela Cleinte Chamada de C e a Tabela Diretorio
que chamaremos de D

Na tabela "D" tem as informaçoes com o Diretorio de Cada Cliente
da Tabela "C"

Voce quer saçvar na Tabela "C" as informaçoes que consta na Tabela "D"
para cada Cliente

Seria isto ???

Se for isto , e tudo indica ser isto , me parece uma Redundancia e foge
do conceito do Relacionamento que se pode existir entre a Tabela "C" e
a Tabela "D" ... Algo que poderia e deve ocorrer de modo natural entre
as duas Tabelas que seria este Relacionamento

Imagine uma Tabela Cliente
Agora imagine uma Tabela Telefones
Seria o Mesmo que criar um Campo do Tipo Blob para cada Registro
de Clientes onde iremos colocar neste campo todos os possiveis CEM
telefones que cada Cliente Possa Ter

Pois bem este Estrutura não é usual e talves nen Recomendada e algo
diriamos fora dos padrões no meu entendimento
_________________
http://marcosalles.wordpress.com

Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
leogazio
Colaborador
Colaborador


Registrado: Domingo, 18 de Fevereiro de 2007
Mensagens: 1047
Localização: Alto Paraná - PR

MensagemEnviada: Sex Jan 20, 2012 4:11 pm    Assunto: Re: Populando ListBox com info. do banco. Responder com Citação

Djarum escreveu:
Falai pessoal do Active Delphi,

Em ordem?

Bom, preciso de um auxílio da galera que manja rs

Eu até imagino que seja besteira, mas não consegui fazer sozinho, por isso estou pedindo um auxílio de vocës.

Tenho um TabControl e nele, diversos campos que são 'populados' com informações do banco. Está funcionando perfeitamente até aqui; rs
Agora, me surgiu a necessidade de guardar mais informações em um campo do tipo Blob; Estou usando Paradox pra guardar somente algumas informações. O que acontece? Como não conheço nada de campos Blob, criei um no banco, do tipo Blob Binary e, no formulário, quando peço pra salvar, uso o comando:
Código:

for I := 0 to LstBxDiretorios.Items.Count - 1 do
                begin
                  Dm1.Tab_Tarefa.FieldByName('Diretorio').Value := LstBxDiretorios.Items[I];
                  end;
                  DM1.Tab_Tarefa.Post;


Inicialmente salva, mas depois, SOME! Estou fazendo algo errado? Nunca mexi com campos deste tipo, estou aprendendo agora...

Queria saber se falta algum macete ou se, de repente, trocando o componente ListBox por um DBListBox resolva o problema; Fiz a troca e não resolveu (ligando o DBListBox ao banco).

Fico no aguardo galera,

Um abraço@


Amigo você precisa explicar a sua necessidade, nem sempre só dizendo o que você QUER fazer em código ajuda, você precisa explicar o que você quer fazer, qual resultado final você quer ter, esquece código e só explica exatamente o que você precisa que com certeza alguém aqui vai saber te colocar você na direção certa meu irmão...

De antemão o Felipe tem razão, isso eu vi de cara ali que você tá sobrescrevendo o valor no field "Diretorio" a cada volta do loop. Outra coisa, ali você tá tentando atribuir uma string a um campo do tipo(provavelmente) "ftBlob", aí não vai, já a implementação do Felipe também vai dar na mesma pois o valor atribuído ao campo vai continuar sendo uma String. Faz isso, explica com detalhes o resultado final que você precisa...
_________________
Leonardo Gazio - Consultoria e Suporte a Desenvolvedores.

Suporte para todo o Brasil via;
E-mail: leonardogazio@delphimasters.com
Msn: lngsmattos@hotmail.com
Claro: (21) 7301-7243


Editado pela última vez por leogazio em Sex Jan 20, 2012 4:20 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Este Tópico está Bloqueado. Você não pode editar mensagens ou responder    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2, 3  Próximo
Página 1 de 3

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB