 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Ter Jan 17, 2012 2:58 pm Assunto: Populando ListBox com info. do banco. |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Ter Jan 17, 2012 3:03 pm Assunto: |
|
|
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 |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Ter Jan 17, 2012 3:06 pm Assunto: |
|
|
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 |
|
 |
felipecaputo Colaborador


Registrado: Quinta-Feira, 13 de Mai de 2010 Mensagens: 1719 Localização: Florianópolis / SC
|
Enviada: Ter Jan 17, 2012 3:43 pm Assunto: |
|
|
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 |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Ter Jan 17, 2012 3:55 pm Assunto: |
|
|
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 |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Qua Jan 18, 2012 9:14 am Assunto: |
|
|
| Alguém galera? |
|
| Voltar ao Topo |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Qui Jan 19, 2012 9:29 am Assunto: |
|
|
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:
Gravar as informações na tabela.
O que tenho feito de errado? |
|
| Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Qui Jan 19, 2012 10:15 am Assunto: Re: Populando ListBox com info. do banco. |
|
|
| 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 |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Qui Jan 19, 2012 11:23 am Assunto: |
|
|
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 |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Qui Jan 19, 2012 12:26 pm Assunto: |
|
|
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 |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Qui Jan 19, 2012 12:32 pm Assunto: |
|
|
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 |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Sex Jan 20, 2012 3:11 pm Assunto: |
|
|
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 |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Sex Jan 20, 2012 3:42 pm Assunto: |
|
|
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 |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Sex Jan 20, 2012 4:01 pm Assunto: |
|
|
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 |
|
 |
leogazio Colaborador


Registrado: Domingo, 18 de Fevereiro de 2007 Mensagens: 1047 Localização: Alto Paraná - PR
|
Enviada: Sex Jan 20, 2012 4:11 pm Assunto: Re: Populando ListBox com info. do banco. |
|
|
| 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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|