用选定项目的Recordet信息加载用户窗体(如何加快速度)

我有一个很小的问题,但是仍然是一个问题,它使我疯狂!

我有一个用户窗体(VBA,使用Excel作为前端和访问作为后端),它具有文本框和列表框。

它所做的就是根据用户在列表框中的select,用来自Access数据库的信息填充文本框。

因此,如果用户select具有“001”代码的条目,它将转到Access数据库,logging并填充UserForm。

以下是代码:

Private Sub LtaInversiones_Click() Dim rcon As Recordset Dim sql As String sql = "SELECT * FROM INVERSIONES WHERE CODIGO = "_ & LtaInversiones.List(LtaInversiones.ListIndex, 0) Set rcon = BD.OpenRecordset(sql) With rcon CmbCodigo.Text = !Codigo CmbTipo.Text = !TIPO TxtTitulo.Text = !TITULO TxtMonto.Text = !Monto DTFCompra.Value = !FECHACOMPRA DTFVencimiento.Value = !FECHAVENCIMIENTO CmbPeriodicidad.Text = !periodicidad TxtTCupon.Text = !TASACUPON TxtPrecio.Text = !Precio TxtRendimiento.Text = !rendimiento TxtGPRedencion.Text = !GANANCIAPERDIDAREDENCION TxtIAcum.Text = !INTERESESACUMULADOS CmbEmisor.Text = !eMISOR CmbOperador.Text = !OPERADOR TxtNotas.Text = !NOTAS If !FECHAREDENCION <> "" Then DTFRedencion.Value = !FECHAREDENCION ChkCInversion.Value = True Else ChkCInversion.Value = False End If .Close End With Set rcon = Nothing CmdEliminar.Visible = True CmdGuardar.Caption = "Modificar" CmbCodigo.Enabled = True 

事情是,它的工作,但它减慢了一点。 我已经testing了可能的原因,这是肯定的事实,查询必须去查看什么列表索引是在去DB之前。

所以我想问你一些更有经验的程序员(我是一个贸易律师:/)如果有更好的方法做到这一点。

唯一可能的情况是,可能是在初始化时加载所有logging,然后以某种方式访问​​这些数据,因为这样会阻止到数据库的访问,但是我不确定这是否会提高性能或者如何处理这个问题。

谢谢

什么阻止你改变这个:

 LtaInversiones.List(LtaInversiones.ListIndex, 0) 

这个?

 LtaInversiones.Value 

这将避免双重查找(List&ListIndex)

我个人避免“!” 符号,更喜欢更丰富的.Fields(“ABC”)。价值
我不确定任何性能损失或优势。