CARREGANDO COMBO INDEX

IRENKO 12/03/2010 11:39:19
#336756
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
DANIKULL 12/03/2010 12:31:50
#336764
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???

ROBIU 12/03/2010 12:47:30
#336773
Resposta escolhida
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:
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



IRENKO 12/03/2010 13:43:05
#336791
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[Ô]
DANIKULL 12/03/2010 18:09:15
#336831
IRENKO, boa tarde.

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
FFCOUTO 12/03/2010 21:42:26
#336849
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

IRENKO 13/03/2010 09:56:50
#336871
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.
TECLA 13/03/2010 16:18:59
#336885
Problema resolvido, ENCERRE o tópico.
Tópico encerrado , respostas não são mais permitidas