gpt4 book ai didi

excel - 带有 Adodb 查询的下拉列表

转载 作者:行者123 更新时间:2023-12-03 21:42:57 25 4
gpt4 key购买 nike

我想用我的查询结果创建下拉列表。我正在寻求帮助,因为我不知道如何在列表中显示此结果。
列表示例:
enter image description here
我的查询是:

 '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
谢谢您的帮助 !

最佳答案

考虑一种不同的无代码方法:

  • 向宿主文档/工作簿添加新工作表
  • 从“数据”功能区选项卡导入外部数据(选择“从 SQL Server”)
  • Excel 创建一个 ListObjectQueryTable 为背景的表格使用 WorkbookConnection 的对象可以配置为在打开时自动刷新,或者作为一次性拉取单独保留。

  • 选择produit ListObject/表中的列; Excel 突出显示整个列的内容,并保留未选择的标题。
  • 在“公式”功能区选项卡中,单击“定义名称”组中的“定义名称”命令。
  • 为范围命名 ProductsList , 验证它是指 TableName[produit]以便它自动增长和缩小以适应列内容。

  • 将数据验证列表更改为 =ProductsList .
  • 如果需要,隐藏包含查询和表的工作表。

  • 无需代码,验证列表将始终跟上查询结果的刷新。

    旁注,该查询似乎在进行低效的交叉连接,其中至少一个是可以表示为内部连接的 where 连接。您确定查询产生了预期的记录(我怀疑它产生了大量的重复项,具体取决于交叉连接表中存在多少记录)?
    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
    本能将删除我们没有从中选择或过滤任何内容的表 - 如果此查询产生相同的预期输出,那么假设定义了主键和外键,我相信它的执行计划会更有效:
    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')

    关于excel - 带有 Adodb 查询的下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66353913/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com