ARRAY VB6
Pessoal, boa tarde.
Gostaria da ajuda de vocês para que criar uma array onde partindo do princÃpio que o fim do array é a quantidade de registros que possuo no banco de dados.
Construi um Form com 14 pictures onde cada uma represente os primeiros 14 registros do banco de dados, e, se o usuário clicar em qualquer um deles, ele deve trazer o código do produto relacionado à foto. Bem o caso é que as fotos estão vindo corretamente, mas ao criar o código para ler o array do vb e trazer o código do produto correto, ele sempre traz o registro número 1, ou seja, a minha aplicação não criou os 14 arrays pedidos.
Segue código para visualizem,
Private Sub Form_Load()
Dim mcodp(0 To 14)
dataprod.DatabaseName = App.Path & [Ô]\DbDivisao.mdb[Ô]
sqlprodutos = [Ô]SELECT * FROM PRODUTOS ORDER BY DESC_PRODUTO[Ô]
dataprod.RecordSource = sqlprodutos
dataprod.Refresh
dataprod.Caption = [Ô]Registros 1/[Ô] & Tproduto.RecordCount
datapedido.DatabaseName = App.Path & [Ô]\DbDivisao.mdb[Ô]
Tproduto.MoveFirst
mcaminho = Tproduto([Ô]Foto[Ô])
For i = 0 To 14
mcodp(i) = Tproduto([Ô]IdProduto[Ô])
Picture2(i).Picture = LoadPicture(mcaminho)
Tproduto.MoveNext
mcaminho = Tproduto([Ô]Foto[Ô])
Next i
End Sub
Desde já agradeço.
Gostaria da ajuda de vocês para que criar uma array onde partindo do princÃpio que o fim do array é a quantidade de registros que possuo no banco de dados.
Construi um Form com 14 pictures onde cada uma represente os primeiros 14 registros do banco de dados, e, se o usuário clicar em qualquer um deles, ele deve trazer o código do produto relacionado à foto. Bem o caso é que as fotos estão vindo corretamente, mas ao criar o código para ler o array do vb e trazer o código do produto correto, ele sempre traz o registro número 1, ou seja, a minha aplicação não criou os 14 arrays pedidos.
Segue código para visualizem,
Private Sub Form_Load()
Dim mcodp(0 To 14)
dataprod.DatabaseName = App.Path & [Ô]\DbDivisao.mdb[Ô]
sqlprodutos = [Ô]SELECT * FROM PRODUTOS ORDER BY DESC_PRODUTO[Ô]
dataprod.RecordSource = sqlprodutos
dataprod.Refresh
dataprod.Caption = [Ô]Registros 1/[Ô] & Tproduto.RecordCount
datapedido.DatabaseName = App.Path & [Ô]\DbDivisao.mdb[Ô]
Tproduto.MoveFirst
mcaminho = Tproduto([Ô]Foto[Ô])
For i = 0 To 14
mcodp(i) = Tproduto([Ô]IdProduto[Ô])
Picture2(i).Picture = LoadPicture(mcaminho)
Tproduto.MoveNext
mcaminho = Tproduto([Ô]Foto[Ô])
Next i
End Sub
Desde já agradeço.
Se bem me lembro do antigo access e vb6, ao [Ô]puxar[Ô] uma leitura do banco de dados, sempre vai mostrar a quantidade de registros 1 a menos que vc percorra a tabela inteira
Tenta fazer assim
dataprod.Refresh
[txt-color=#8A2BE2]Tproduto.movelast[/txt-color]
dataprod.Caption = [Ô]Registros 1/[Ô] & Tproduto.RecordCount
Tenta fazer assim
dataprod.Refresh
[txt-color=#8A2BE2]Tproduto.movelast[/txt-color]
dataprod.Caption = [Ô]Registros 1/[Ô] & Tproduto.RecordCount
Pense em usar ADO em vez de DAO....
Há um metodo do recordeset que se chama GetRows, ele transforma o resultado da pesquisa em um [Ô]array 2D[Ô]
Não conheço seu sistema, mas não seria melhor criar as PictureBox[ô]s em run time? São sempre 14 mesmo?
Dim mcodp(0 To 14) [ô]são 15 elementos.... e está a declarar o array dentro do evento Form_Load(), ou seja, não vai ter acesso a ele fora desse evento
Você nem precisa do array, pode guardar a informação na propriedade Tag ou ToolTipBox da picturebox...
ex:
Melhor a ordem de cada linha do seu codigo, isto não faz sentido
Há um metodo do recordeset que se chama GetRows, ele transforma o resultado da pesquisa em um [Ô]array 2D[Ô]
Não conheço seu sistema, mas não seria melhor criar as PictureBox[ô]s em run time? São sempre 14 mesmo?
Dim mcodp(0 To 14) [ô]são 15 elementos.... e está a declarar o array dentro do evento Form_Load(), ou seja, não vai ter acesso a ele fora desse evento
Você nem precisa do array, pode guardar a informação na propriedade Tag ou ToolTipBox da picturebox...
ex:
Picture2(i).Tag = Tproduto([Ô]IdProduto[Ô])
[ô]Depois no evento click da picture
Private Sub Picture2_Click(Index As Integer)
MsgBox Picture2(Index).Tag
End Sub
Melhor a ordem de cada linha do seu codigo, isto não faz sentido
Tproduto.MoveFirst
mcaminho = Tproduto([Ô]Foto[Ô])
For i = 0 To 14
mcodp(i) = Tproduto([Ô]IdProduto[Ô])
Picture2(i).Picture = LoadPicture(mcaminho)
Tproduto.MoveNext
mcaminho = Tproduto([Ô]Foto[Ô])
Next i
Amigo se vc quer acessar seu array o tempo todo no formulário vc tem que deixar ele declarado fora da sub, vc esta declarando ele dentro do form load, ao acabar a sub vc perde acesso a ele tmb,declare ele logo no inicio do codigo.
Dim mcodp(0 To 14)
Private Sub Form_Load()
dataprod.DatabaseName = App.Path & [Ô]\DbDivisao.mdb[Ô]
sqlprodutos = [Ô]SE....
Se usar o Option Explicit declare o array logo abaixo
Option Explicit
Dim mcodp(0 To 14)
Dim mcodp(0 To 14)
Private Sub Form_Load()
dataprod.DatabaseName = App.Path & [Ô]\DbDivisao.mdb[Ô]
sqlprodutos = [Ô]SE....
Se usar o Option Explicit declare o array logo abaixo
Option Explicit
Dim mcodp(0 To 14)
Tópico encerrado , respostas não são mais permitidas