CARREGANDO COMBO INDEX
Pessoal, criei dois combos sendo ComboMat(0) e ComboMat(1) e tenho a sub Sub ComboDados() para carrega-los com os dados. Estou usando um select case nessa sub mas não esta carregando os dados em nenhum dos dois, podem me dizer onde esta o erro no codigo abaixo?
Sub ComboDados()
Dim Sql_5 As String
Set RsCombo = New ADODB.Recordset
If RsCombo.State = 1 Then Dados.Close
With RsCombo
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockPessimistic
Dim mSql As String
Select Case ComboMat(Index)
Case 0
mSql = [Ô]Select Descricao FROM Materiais Where Tipo = [ô]003[ô] ORDER BY Descricao[Ô]
.Source = mSql
.ActiveConnection = ConexaoEPI
.Open
If .BOF = True And .EOF = True Then Exit Sub
If RsCombo.RecordCount = 0 Then
Me.ComboMat(0).Clear
Else
Me.ComboMat(0).Clear
Do While Not RsCombo.EOF
Me.ComboMat(0).AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
Loop
End If
Case 1
mSql = [Ô]Select Descricao FROM Materiais Where Tipo <> [ô]003[ô] ORDER BY Descricao[Ô]
.Source = mSql
.ActiveConnection = ConexaoEPI
.Open
If .BOF = True And .EOF = True Then Exit Sub
If RsCombo.RecordCount = 0 Then
Me.ComboMat(1).Clear
Else
Me.ComboMat(1).Clear
Do While Not RsCombo.EOF
Me.ComboMat(1).AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
Loop
End If
End Select
End With
[ô]RsCombo.Close
[ô]Set RsCombo = Nothing
End Sub
Sub ComboDados()
Dim Sql_5 As String
Set RsCombo = New ADODB.Recordset
If RsCombo.State = 1 Then Dados.Close
With RsCombo
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockPessimistic
Dim mSql As String
Select Case ComboMat(Index)
Case 0
mSql = [Ô]Select Descricao FROM Materiais Where Tipo = [ô]003[ô] ORDER BY Descricao[Ô]
.Source = mSql
.ActiveConnection = ConexaoEPI
.Open
If .BOF = True And .EOF = True Then Exit Sub
If RsCombo.RecordCount = 0 Then
Me.ComboMat(0).Clear
Else
Me.ComboMat(0).Clear
Do While Not RsCombo.EOF
Me.ComboMat(0).AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
Loop
End If
Case 1
mSql = [Ô]Select Descricao FROM Materiais Where Tipo <> [ô]003[ô] ORDER BY Descricao[Ô]
.Source = mSql
.ActiveConnection = ConexaoEPI
.Open
If .BOF = True And .EOF = True Then Exit Sub
If RsCombo.RecordCount = 0 Then
Me.ComboMat(1).Clear
Else
Me.ComboMat(1).Clear
Do While Not RsCombo.EOF
Me.ComboMat(1).AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
Loop
End If
End Select
End With
[ô]RsCombo.Close
[ô]Set RsCombo = Nothing
End Sub
IRENKO, boa tarde.
Deixa eu te mostrar onde está seu erro:
Aqui você usa um SELECT CASE para selecionar os casos no ComoboBox ComboMat:
--> Select Case ComboMat(Index)
Porém ele ainda não foi preenchido, nem manualmente via programação e nem via código porque nestas linhas você populando ele
1º. Caso 0
Do While Not RsCombo.EOF
Me.ComboMat(0).AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
Loop
2º. Caso 1
Do While Not RsCombo.EOF
Me.ComboMat(1).AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
Loop
Qual a finalidade do outro ComoboBox que não está incluso nesta sub, pois pelo que entendi, em um combobox você tem o critéiro de avalização e apartir da seleção do critério você popula o outro comobox é isto mesmo???
Deixa eu te mostrar onde está seu erro:
Aqui você usa um SELECT CASE para selecionar os casos no ComoboBox ComboMat:
--> Select Case ComboMat(Index)
Porém ele ainda não foi preenchido, nem manualmente via programação e nem via código porque nestas linhas você populando ele
1º. Caso 0
Do While Not RsCombo.EOF
Me.ComboMat(0).AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
Loop
2º. Caso 1
Do While Not RsCombo.EOF
Me.ComboMat(1).AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
Loop
Qual a finalidade do outro ComoboBox que não está incluso nesta sub, pois pelo que entendi, em um combobox você tem o critéiro de avalização e apartir da seleção do critério você popula o outro comobox é isto mesmo???
O Index do combo só é visÃvel dentro dos eventos do combo - Semelhante ao alcançe das variáveis. Por isso sua sub não é executada:
CORREÇÃO:
Para Chamar a sub:
ComboDados Index [ô]Aqui é o index do Combo que será passado para a sub pelo parâmetro CmbIndex
Citação:Select Case ComboMat(Index)
CORREÇÃO:
Sub ComboDados(CmbIndex as Integer)
[ô]Seu Codigo
Select Case CmbIndex
Case 0
[ô]Seu Codigo
Case 1
[ô]Seu codigo
End Select
end Sub
Para Chamar a sub:
ComboDados Index [ô]Aqui é o index do Combo que será passado para a sub pelo parâmetro CmbIndex
O que quero é carregar o ComboMat(0) com a Sql:
mSql = [Ô]Select Descricao FROM Materiais Where Tipo = [ô]003[ô] ORDER BY Descricao[Ô]
e o ComboMat(1) com a Sql:
mSql = [Ô]Select Descricao FROM Materiais Where Tipo <> [ô]003[ô] ORDER BY Descricao[Ô]
mSql = [Ô]Select Descricao FROM Materiais Where Tipo = [ô]003[ô] ORDER BY Descricao[Ô]
e o ComboMat(1) com a Sql:
mSql = [Ô]Select Descricao FROM Materiais Where Tipo <> [ô]003[ô] ORDER BY Descricao[Ô]
IRENKO, boa tarde.
Alterei sua SUB, da uma olhada ai, agora so diz uma coisa como você carrega o ComboDados????
Alterei sua SUB, da uma olhada ai, agora so diz uma coisa como você carrega o ComboDados????
Private Sub ComboDadosa()
Dim Sql_5 As String
Dim mSql As String
Select Case ComboDados.ListIndex
Case 0
mSql = [Ô]Select Descricao FROM Materiais Where Tipo = [ô]003[ô] ORDER BY Descricao[Ô]
Case 1
mSql = [Ô]Select Descricao FROM Materiais Where Tipo <> [ô]003[ô] ORDER BY Descricao[Ô]
Case Else
Exit Sub
End Select
If RsCombo.State = 1 Then Dados.Close
Set RsCombo = New ADODB.Recordset
With RsCombo
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockPessimistic
.Source = mSql
.ActiveConnection = ConexaoEPI
.Open
If .BOF = True And .EOF = True Then Exit Sub
If .RecordCount = 0 Then
Me.ComboMat.Clear
Else
Me.ComboMat.Clear
Do While Not RsCombo.EOF
Me.ComboMat.AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
Loop
End If
End With
[ô]RsCombo.Close
[ô]Set RsCombo = Nothing
End Sub
IRENKO, faça como o DANIKULL falou porém no evento Form_Load ponha a sub ComboDados
Private Sub Form_Load()
Call ComboDados(0)
Call ComboDados(1)
End sub
Ficou assim:
No load:
ComboDados [Ô]Select Descricao FROM Materiais Where Tipo = [ô]003[ô] ORDER BY Descricao[Ô], 0
ComboDados [Ô]Select Descricao FROM Materiais Where Tipo Is Null ORDER BY Descricao[Ô], 1
Sub ComboDados(mSql As String, CmbIndex As Integer)
Set RsCombo = New ADODB.Recordset
If RsCombo.State = 1 Then _
RsCombo.Close
With RsCombo
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockPessimistic
.Source = mSql
.ActiveConnection = ConexaoEPI
.Open
If .BOF And .EOF Then _
Exit Sub
If .RecordCount = 0 Then _
Exit Sub
Me.ComboMat(CmbIndex).Clear
Do While Not RsCombo.EOF
Me.ComboMat(CmbIndex).AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
If Err.Number <> 0 Then Exit Do
Loop
End With
RsCombo.Close
Set RsCombo = Nothing
End Sub
O ROBIU tinha razão. Obrigado a todos, principalmente a um q não participou do tópico. Valeu LVFIOROT.
No load:
ComboDados [Ô]Select Descricao FROM Materiais Where Tipo = [ô]003[ô] ORDER BY Descricao[Ô], 0
ComboDados [Ô]Select Descricao FROM Materiais Where Tipo Is Null ORDER BY Descricao[Ô], 1
Sub ComboDados(mSql As String, CmbIndex As Integer)
Set RsCombo = New ADODB.Recordset
If RsCombo.State = 1 Then _
RsCombo.Close
With RsCombo
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockPessimistic
.Source = mSql
.ActiveConnection = ConexaoEPI
.Open
If .BOF And .EOF Then _
Exit Sub
If .RecordCount = 0 Then _
Exit Sub
Me.ComboMat(CmbIndex).Clear
Do While Not RsCombo.EOF
Me.ComboMat(CmbIndex).AddItem RsCombo([Ô]Descricao[Ô])
.MoveNext
If Err.Number <> 0 Then Exit Do
Loop
End With
RsCombo.Close
Set RsCombo = Nothing
End Sub
O ROBIU tinha razão. Obrigado a todos, principalmente a um q não participou do tópico. Valeu LVFIOROT.
Problema resolvido, ENCERRE o tópico.
Tópico encerrado , respostas não são mais permitidas