|
Postada em 04/06/2008 16:51 hs
Boa tarde a todos....
estou com uma grande dúvida no SQL... possuo três tabelas relacionadas em access... por exemplo:
TAB_PROF (profissional) -> campo: ID_PROF (key um para muitos) ; TAB_PROFxDEMANDA -> campos: ID_PROF, ID_DEMANDA TAB_DEMANDA -> campos: ID_DEMANDA (key um para muitos), DEMANDA
Bom, o campo ID_PROF (tab_prof) está relacionado com ID_PROF (tabela_profxdemanda) e o campo ID_DEMANDA (tab_profxdemanda) está relacionado com o campo ID_DEMANDA(tab_demanda).
A idéia é a seguinte... eu cadastro os profissionais na TAB_PROF, depois cadastro as demandas com suas respectivas ID´s na TAB_DEMANDA.
A TAB_PROFxDEMANDA, está servindo para eu estabelecer as demandas que os prof´s possuem direito...
Bom até aqui.. tudo bem!
agora a questão é no VB... Eu criei uma combo que é carregada os nomes dos profissionais quando o form é carregado... e eu gostaria que quando nesta combo eu escolhe-se o nome de algum profissional em uma outra combo aparecesse SOMENTE as DEMANDAS que casa profissional possui acesso!
Queridos... como eu fasso isso..cheguei a criar a conexão com o banco de dados.. mas acredito que o erro é entre meu SQL e a combo que deveria receber essas demandas... como eu resolvo isso?
Um grande abraço a todos!
Alberto
"Em tijolo em tijolo a casa sai!" Autor: Eu mesmo.
|
|
|
|
Treze
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 04/06/2008 16:54 hs
posta o código que você fez até agora para fazer este preenchimento
|
|
|
|
Postada em 04/06/2008 16:56 hs
GENERAL Dim ssql As String Dim rsDemanda As ADODB.Recordset Dim BuscaDemanda As ADODB.Recordset ____________________________________________ Private Sub cboNome_Click()
Dim BDemanda As New ADODB.Command
ssql = "SELECT TAB_PROF.ID_PROF, TAB_PROFxDEMANDA.ID_PROF, TAB_PROFxDEMANDA.ID_DEMANDA FROM TAB_PROF, TAB_PROFxDEMANDA WHERE TAB_PROF.ID_PROF = TAB_PROFxDEMANDA.ID_PROF"
With BDemanda .ActiveConnection = conn .CommandType = adCmdText .CommandText = ssql Set BuscaDemanda = .Execute End With
With BuscaDemanda If .EOF And .BOF Then MsgBox "Impossivel completar a operação", _ vbExclamation + vbOKOnly + vbApplicationModal, "Aviso" Else
rsDemanda.Open ssql, conn, adOpenDynamic, adLockPessimistic
Do cboDemanda.AddItem rsDemanda.Fields("ID_DEMANDA") 'inclui o dado do campo nome do recordset rsDemanda.MoveNext 'move para o próximo registro Loop While Not rs.EOF
rsDemanda.Close
Set BuscaDemanda = Nothing Set BDemanda = Nothing End If End With
End Sub
Alberto
"Em tijolo em tijolo a casa sai!" Autor: Eu mesmo.
|
|
|
|
Postada em 04/06/2008 17:02 hs
tenta esta alteração Do While Not rsDemanda.EOF cboDemanda.AddItem rsDemanda.Fields("ID_DEMANDA") 'inclui o dado do campo nome do recordset rsDemanda.MoveNext 'move para o próximo registro Loop
|
|
|
|
Postada em 04/06/2008 17:13 hs
Então.. aparentemente.. não sofreu ocorreu nada...
Eu vou postar o código completo.. pois na realialidade... exitem outros códigos no mesmo private sub.... que funcionam normalmente... agora estou tentando inserir esse ai que eu postei anteriormente... e não acontece nada... eu vou postar ele nu e cru... por favor da uma olhadinha para mim... inclusive no SQL....
Private Sub cboNome_Click()
cmdIncLinha.Enabled = False
Dim cnnComando As New ADODB.Command
sql = "SELECT * FROM TAB_PROF WHERE NOME='" & cboNome.Text & "'"
With cnnComando .ActiveConnection = conn .CommandType = adCmdText .CommandText = sql Set Busca = .Execute End With With Busca If .EOF And .BOF Then MsgBox "Impossivel completar a operação", _ vbExclamation + vbOKOnly + vbApplicationModal, "Aviso" Else lblArea.Caption = !AREA rsMes.Open "CONTROLE_DIAS_POR_MES", conn, adOpenDynamic, adLockPessimistic
cboMes.Clear 'Limpa a combo
Do
cboMes.AddItem rsMes.Fields("Mes_Ano") '& "/" & rsMes.Fields("Ano") 'inclui o dado do campo mes e ano do recordset rsMes.MoveNext 'move para o próximo registro
Loop While Not rsMes.EOF rsMes.Close Grid.Cols = 1 Grid.Rows = 1 Grid.ColWidth(0) = 0 linhas = 0
Set Busca = Nothing Set cnnComando = Nothing Screen.MousePointer = vbDefault Exit Sub End If End With
------------------------------------------ o código acima funciona... o abaixo não....
Dim BDemanda As New ADODB.Command
ssql = "SELECT TAB_PROF.ID_PROF, TAB_PROFxDEMANDA.ID_PROF, TAB_PROFxDEMANDA.ID_DEMANDA FROM TAB_PROF, TAB_PROFxDEMANDA WHERE TAB_PROF.ID_PROF = TAB_PROFxDEMANDA.ID_PROF"
With BDemanda .ActiveConnection = conn .CommandType = adCmdText .CommandText = ssql Set BuscaDemanda = .Execute End With
With BuscaDemanda If .EOF And .BOF Then MsgBox "Impossivel completar a operação", _ vbExclamation + vbOKOnly + vbApplicationModal, "Aviso" Else
rsDemanda.Open ssql, conn, adOpenDynamic, adLockPessimistic
Do While Not rsDemanda.EOF cboDemanda.AddItem rsDemanda.Fields("ID_DEMANDA") 'inclui o dado do campo nome do recordset rsDemanda.MoveNext 'move para o próximo registro Loop
rsDemanda.Close
Set BuscaDemanda = Nothing Set BDemanda = Nothing End If End With
End Sub
Alberto
"Em tijolo em tijolo a casa sai!" Autor: Eu mesmo.
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 04/06/2008 17:21 hs
Eu reparei que no código de cima possui rsMes.Open "CONTROLE_DIAS_POR_MES", conn, adOpenDynamic, adLockPessimistic
que não tem nada a ver com: sql = "SELECT * FROM TAB_PROF WHERE NOME='" & cboNome.Text & "'"
este CONTROLE_DIAS_POR_MES é alguma sub que você criou
|
|
|