rodrigotnoma Postado Outubro 31, 2006 Denunciar Share Postado Outubro 31, 2006 Private Function enchegrid(dados As String, sql As String)Set cn = New ADODB.Connectionconnstring = "provider=microsoft.jet.oledb.4.0;data source=c:\natureza\produtos.mdb;"cn.Open connstringMSFlexGrid1.ClearSet rs = cn.Execute(sql, , adCmdText)MSFlexGrid1.Rows = rs.Fields.Count + 1MSFlexGrid1.Cols = rs.Fields.CountReDim largura_coluna(0 To rs.Fields.Count - 1)' exibe os cabeçalhos das colunasFor coluna = 0 To rs.Fields.Count - 1 MSFlexGrid1.TextMatrix(0, coluna) = rs.Fields(coluna).Name largura_coluna(coluna) = TextWidth(rs.Fields(coluna).Name)Next coluna' exibe o valor de cada linhalinha = 1Do While Not rs.EOF MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1 For coluna = 0 To rs.Fields.Count - 1 MSFlexGrid1.TextMatrix(linha, coluna) = rs.Fields(coluna).Value Depois estou chamando a função:Private Sub Form_Load()Call enchegrid("c:\natureza\produtos.mdb", "select * from tb_produto where quantidade < " & 50 & "")End SubO erro esta ocorrendo na linha acima em vermelho:Invalid use of nullO que poderia ser?Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Outubro 31, 2006 Denunciar Share Postado Outubro 31, 2006 o campo coluna esta vindo com valor nulo do banco. o esquema é fazer assim:If Not IsNull(rs.Fields(coluna).Value)MSFlexGrid1.TextMatrix(linha, coluna) = rs.Fields(coluna).ValueElseMSFlexGrid1.TextMatrix(linha, coluna) = ""End If[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lcs_sp Postado Outubro 31, 2006 Denunciar Share Postado Outubro 31, 2006 O registro esta voltando um valor nulotente isto :MSFlexGrid1.TextMatrix(linha, coluna) = iif(isnull(rs.Fields(coluna).Value)=true,'',rs.Fields(coluna).Value) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rodrigotnoma Postado Outubro 31, 2006 Autor Denunciar Share Postado Outubro 31, 2006 OK, deu certo sim, mas gostaria de saber como fazer para controlar a largura das colunas, pois está cortando os nomes dos registros.E se possivel, me dizer o porque esta retornando valor nulo o:rs.Fields(coluna).ValueObrigado mais uma vez. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lcs_sp Postado Outubro 31, 2006 Denunciar Share Postado Outubro 31, 2006 Olá1º porque não existe nada no registro (registro = a nulo)2º nomedaflex.colwidht=tamanhovê se é isto Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rodrigotnoma Postado Outubro 31, 2006 Autor Denunciar Share Postado Outubro 31, 2006 OK, deu certo....Mais uma vez obrigado.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rodrigotnoma
Private Function enchegrid(dados As String, sql As String)
Set cn = New ADODB.Connection
connstring = "provider=microsoft.jet.oledb.4.0;data source=c:\natureza\produtos.mdb;"
cn.Open connstring
MSFlexGrid1.Clear
Set rs = cn.Execute(sql, , adCmdText)
MSFlexGrid1.Rows = rs.Fields.Count + 1
MSFlexGrid1.Cols = rs.Fields.Count
ReDim largura_coluna(0 To rs.Fields.Count - 1)
' exibe os cabeçalhos das colunas
For coluna = 0 To rs.Fields.Count - 1
MSFlexGrid1.TextMatrix(0, coluna) = rs.Fields(coluna).Name
largura_coluna(coluna) = TextWidth(rs.Fields(coluna).Name)
Next coluna
' exibe o valor de cada linha
linha = 1
Do While Not rs.EOF
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
For coluna = 0 To rs.Fields.Count - 1
MSFlexGrid1.TextMatrix(linha, coluna) = rs.Fields(coluna).Value
Depois estou chamando a função:
Private Sub Form_Load()
Call enchegrid("c:\natureza\produtos.mdb", "select * from tb_produto where quantidade < " & 50 & "")
End Sub
O erro esta ocorrendo na linha acima em vermelho:
Invalid use of null
O que poderia ser?
Obrigado
Link para o comentário
Compartilhar em outros sites
5 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.