我想用我的查询结果创建下拉列表。我正在寻求帮助,因为我不知道如何在列表中显示此结果。
清单示例:
我的查询是:
'DROPDOWN LIST
Private Sub cb_gest_Change()
If Not FSD.cb_gest.MatchFound And FSD.cb_gest <> "" Then
MsgBox "Saisie impossible, le gestionnaire n'existe pas !", , "Contrôle
Gestionnaire"
FSD.cb_gest = ""
Else
FSD.Cells(29, COL_DATA) = FSD.cb_gest
End If
End Sub
'DROPDOWN LIST
Sub init_combo()
Dim Resultat As ADODB.Recordset
Dim Requete As String
FSD.cb_gest.Clear
Requete = "select lb_gestion from DB_GESTIONNAIRE "
Requete = Requete + "WHERE (d_deb_valid <= TRUNC(SYSDATE) OR d_deb_valid IS
NULL) AND (d_fin_valid >= TRUNC(SYSDATE) OR d_fin_valid IS NULL)"
Requete = Requete + " ORDER BY LB_GESTION"
Set Resultat = New ADODB.Recordset
Resultat.ActiveConnection = oBase
Resultat.Source = Requete
Resultat.Open
While Not Resultat.EOF
FSD.cb_gest.AddItem Resultat!lb_gestion
Resultat.MoveNext
Wend
If FSD.Cells(29, COL_DATA).Value <> "" Then
FSD.cb_gest = FSD.Cells(29, COL_DATA).Value
Else
FSD.Cells(29, COL_DATA).Value = ""
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助 !
考虑一种不同的无代码方法:
ListObject由QueryTable对象支持的表,该对象使用WorkbookConnection可以配置为在打开时自动刷新,或单独作为一次性拉取。produitListObject/table中的列;Excel 突出显示整个列内容并保持未选中标题。ProductsList,验证它所引用的内容,TableName[produit]以便它自动增长和缩小以适应列内容。=ProductsList.无需代码,验证列表将始终与刷新的查询结果保持同步。
旁注,该查询似乎使交叉联接效率低下,其中至少一个是可以表示为内部联接的 where-join。您确定查询产生了预期的记录(我怀疑它产生了大量重复项,具体取决于交叉联接表中存在的记录数)?
SELECT prod.cd_produit AS produit
FROM db_dossier sousc, db_produit prod, db_protocole proto, db_tiers tiers, db_personne pers
WHERE sousc.cd_dossier = 'SOUSC' AND sousc.lp_etat_doss NOT IN ('ANNUL','A30','IMPAY') AND sousc.is_produit = prod.is_produit
Run Code Online (Sandbox Code Playgroud)
本能是删除我们没有从中选择或过滤任何内容的表 - 如果此查询产生相同的预期输出,那么假设定义了主键和外键,我相信它的执行计划会更有效:
SELECT prod.cd_produit AS produit
FROM db_dossier AS sousc
INNER JOIN db_produit AS prod ON sousc.is_produit = prod.is_produit
WHERE sousc.cd_dossier = 'SOUSC' AND sousc.lp_etat_doss NOT IN ('ANNUL','A30','IMPAY')
Run Code Online (Sandbox Code Playgroud)