Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ingrid

Consulta sql...e com flexgrid

Recommended Posts

Olá, será q alguem pode me ajudar...estou fazendo uma consulta sql e gostaria q ela aparecesse num listbox, e que preenchesse um flexgrid...estou mandando o codigo, se alguem puder me ajudar agradeço...Dim consulta As StringDim rs As RecordsetFor i = 1 To 31'TESTE consulta = "SELECT PR FROM Resultados"consulta = "SELECT AVG(PR) FROM Resultados WHERE day(Resultados.Data)=" & i & " "Set rs = Dbcon.OpenRecordset(consulta)If Not rs.RecordCount = 0 Then Do List1.AddItem (i) List2.AddItem (rs("AVG(PR)")) //AKI NAUM CONSIGO Q ELE MOSTRE NO LISTBOX dá o erro 3265 ('Item not found in this collection') 'List1.AddItem rs.Fields(i) rs.MoveNextLoop Until rs.EOFEnd If'E aki eh o codigo pra preencher o flexgrid, mas ele naum completa nada....GrdEstatistica.Visible = TrueGrdEstatistica.ClearS$ = "Dia|^Média"GrdEstatistica.FormatString = S$GrdEstatistica.Cols = 2GrdEstatistica.Rows = 1GrdEstatistica.ColWidth(0) = 1000GrdEstatistica.ColWidth(1) = 1000GrdEstatistica.ColAlignment(0) = 9GrdEstatistica.ColAlignment(1) = 4ReDim largura_coluna(0 To rs.Fields.Count - 1)' exibe o valor de cada linhai = 1Do While Not rs.EOF GrdEstatistica.Rows = GrdEstatistica.Rows + 1 For j = 0 To rs.Fields.Count - 1 GrdEstatistica.TextMatrix(i, j) = rs.Fields(j).Value ' verifica o tamanho dos campos largura_campo = TextWidth(rs.Fields(j).Value) If largura_coluna(j) < largura_campo Then largura_coluna(j) = largura_campo Next j rs.MoveNext i = i + 1Loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, será q alguem pode me ajudar...estou fazendo uma consulta sql e gostaria q ela aparecesse num listbox, e que preenchesse um flexgrid...estou mandando o codigo, se alguem puder me ajudar agradeço...Dim consulta As StringDim rs As RecordsetFor i = 1 To 31'TESTE consulta = "SELECT PR FROM Resultados"consulta = "SELECT AVG(PR) FROM Resultados WHERE day(Resultados.Data)=" & i & " "Set rs = Dbcon.OpenRecordset(consulta)If Not rs.RecordCount = 0 Then Do List1.AddItem (i) List2.AddItem (rs("AVG(PR)")) //AKI NAUM CONSIGO Q ELE MOSTRE NO LISTBOX dá o erro 3265 ('Item not found in this collection') 'List1.AddItem rs.Fields(i) rs.MoveNextLoop Until rs.EOFEnd If'E aki eh o codigo pra preencher o flexgrid, mas ele naum completa nada....GrdEstatistica.Visible = TrueGrdEstatistica.ClearS$ = "Dia|^Média"GrdEstatistica.FormatString = S$GrdEstatistica.Cols = 2GrdEstatistica.Rows = 1GrdEstatistica.ColWidth(0) = 1000GrdEstatistica.ColWidth(1) = 1000GrdEstatistica.ColAlignment(0) = 9GrdEstatistica.ColAlignment(1) = 4ReDim largura_coluna(0 To rs.Fields.Count - 1)' exibe o valor de cada linhai = 1Do While Not rs.EOF GrdEstatistica.Rows = GrdEstatistica.Rows + 1 For j = 0 To rs.Fields.Count - 1 GrdEstatistica.TextMatrix(i, j) = rs.Fields(j).Value ' verifica o tamanho dos campos largura_campo = TextWidth(rs.Fields(j).Value) If largura_coluna(j) < largura_campo Then largura_coluna(j) = largura_campo Next j rs.MoveNext i = i + 1Loop

bom no seu codigo voce não colocou nada que fizesse o record voltar para a primeira posição e acredito que esse seja o problema. para resolver tente colocar a rotina de inserção de dados no GrdEstatistica junto com a do List1 assim ambos seriam preenchidos ao mesmo tempo. ou assim que for começar a mexer com o GrdEstatistica , anter do "Do while" coloque rs.movefirst, dai então acredito que possa funcionar do moque que você deseja.flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

For i = 1 To 31consulta = "SELECT AVG(PR) AS Media FROM Resultados WHERE day(Resultados.Data)=" & i & " "Set rs = Dbcon.OpenRecordset(consulta)If Not rs.RecordCount = 0 Then Do If Not IsNull(rs("Media")) Then GrdEstatistica.Rows = rs.RecordCount + 1 For j = 0 To rs.Fields.Count - 1 GrdEstatistica.TextMatrix(i, 0) = i GrdEstatistica.TextMatrix(i, 1) = rs.Fields(j).Value Next j End If rs.MoveNext Loop Until rs.EOFEnd IfNext iNa verdade agora arrumei melhor o codigo, mas como faço um for de 1 ate o dia 31 e na minha tabela soh tenho os dias 1, 11 e 22 dai na hora de jogar pro flexgrid ele da o seguinte erro Run time error 381 (Subscript out of range), como arrumo isso???Pra explicar melhor eh o seguinte eu tenho a media de tres dias apenas 1, 11 e 22, entao a Media dos dias restantes são nulas, como faço pra arrumar isso????Pq se coloco GrdEstatistica.Rows = rs.RecordCount + 1 , ele vai pular do 1 pro 11, dai da akele erro de subscript.... Entaum, o q eu queria mesmo era q qdo a Media fosse nula mudasse pra zero....alguem sabe como???

Compartilhar este post


Link para o post
Compartilhar em outros sites

For i = 1 To 31consulta = "SELECT AVG(PR) AS Media FROM Resultados WHERE day(Resultados.Data)=" & i & " "Set rs = Dbcon.OpenRecordset(consulta)If Not rs.RecordCount = 0 Then Do If Not IsNull(rs("Media")) Then GrdEstatistica.Rows = rs.RecordCount + 1 For j = 0 To rs.Fields.Count - 1 GrdEstatistica.TextMatrix(i, 0) = i GrdEstatistica.TextMatrix(i, 1) = rs.Fields(j).Value Next j End If rs.MoveNext Loop Until rs.EOFEnd IfNext iNa verdade agora arrumei melhor o codigo, mas como faço um for de 1 ate o dia 31 e na minha tabela soh tenho os dias 1, 11 e 22 dai na hora de jogar pro flexgrid ele da o seguinte erro Run time error 381 (Subscript out of range), como arrumo isso???Pra explicar melhor eh o seguinte eu tenho a media de tres dias apenas 1, 11 e 22, entao a Media dos dias restantes são nulas, como faço pra arrumar isso????Pq se coloco GrdEstatistica.Rows = rs.RecordCount + 1 , ele vai pular do 1 pro 11, dai da akele erro de subscript.... Entaum, o q eu queria mesmo era q qdo a Media fosse nula mudasse pra zero....alguem sabe como???

não sei se eu entendi certo, mas caso seja dessa linha que você esta falando :
GrdEstatistica.TextMatrix(i, 1) = rs.Fields(j).Value
o que daria pra fazer é usar o iif
GrdEstatistica.TextMatrix(i, 1) = iif(isnull(rs.Fields(j).Value),0,rs.Fields(j).Value)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.