es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cargando un cuadro combinado desde una columna de una tabla que tiene sólo números como nombre.

Tengo una tabla cuyos nombres de columna son solo números.
Ahora necesito poblar un cuadro combinado a partir de esa tabla dependiendo del valor seleccionado en otro cuadro combinado llamado “cboStandard”, pero está generando un error que dice “No se puede crear la lista secundaria para el campo 2”.
Nota: El nombre de la columna de la tabla se determina a partir del valor seleccionado en el cuadro combinado “cboStandard”.
A continuación se muestra mi código para poblar el cuadro combinado:

Dim Series As String = (cboStandard.Text).Substring((cboStandard.Text).IndexOf(” “) + 1, 3)
If Not Series.Contains(“Sys”) Then
Dim getWeights As String = “Select [” & Series & “] from StandardChicken where [” & Series & “] > 0 ”
loadcombo(getWeights, cboStandardWeights, Series)
Dim dt As New DataTable()
dt = ret.LoadDataTable2(getWeights)
If Not (dt.Rows.Count = 0) Then
cboStandardWeights.DataSource = dt
cboStandardWeights.DisplayMember = Series
cboStandardWeights.ValueMember = Series
cboStandardWeights.AutoCompleteSource = AutoCompleteSource.ListItems

        ElseIf dt.Rows.Count = 0 Then
            cboStandardWeights.Text = ""
            cboStandardWeights.DataSource = dt
            cboStandardWeights.ValueMember = Series
            cboStandardWeights.DisplayMember = Series
            cboStandardWeights.AutoCompleteSource = AutoCompleteSource.ListItems
        End If
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    El mensaje de error “No se puede crear la lista secundaria para el campo 2” suele ocurrir al intentar llenar un ComboBox con una fuente de datos que tiene nombres de columna no válidos o una sintaxis de enlace incorrecta.

    Dado que los nombres de las columnas en la tabla son solo números y se determinan dinámicamente a partir del cboStandard seleccionado, es posible que el nombre de la columna utilizado para el enlace no sea válido o esté mal escrito.

    En el código anterior, se utiliza la variable Series para construir dinámicamente la consulta SQL y establecer las propiedades DisplayMember y ValueMember del cboStandardWeights. Sin embargo, no está claro qué valor se asigna a la variable Series.

    Para solucionar el problema, verifique el valor de la variable Series para asegurarse de que corresponda a un nombre de columna válido en la tabla. Además, verifique la sintaxis de enlace y asegúrese de que coincida con el formato correcto, que suele ser “NombreColumna” o “[NombreColumna]”.

    Aquí hay un código actualizado con algunos cambios para solucionar el problema:

    “`vb.net
    Dim Series As String = (cboStandard.Text).Substring((cboStandard.Text).IndexOf(” “) + 1, 3)

    If Not Series.Contains(“Sys”) Then
    Dim columnName As String = $”[{Series}]” ‘ Envolver el nombre de la columna con corchetes
    Dim getWeights As String = $”SELECT {columnName} FROM StandardChicken WHERE {columnName} > 0″
    loadcombo(getWeights, cboStandardWeights, Series)

    Dim dt As New DataTable()
    dt = ret.LoadDataTable2(getWeights)
    
    If dt.Rows.Count > 0 Then
        cboStandardWeights.DataSource = dt
        cboStandardWeights.DisplayMember = columnName ' Establecer DisplayMember en el nombre de la columna
        cboStandardWeights.ValueMember = columnName ' Establecer ValueMember en el nombre de la columna
        cboStandardWeights.AutoCompleteSource = AutoCompleteSource.ListItems
    Else
        cboStandardWeights.Text = ""
        cboStandardWeights.DataSource = Nothing ' Establecer DataSource en Nothing para borrar los valores anteriores
    End If
    

    End If
    “`

    En el código actualizado, la variable columnName se utiliza como un formato de nombre de columna válido envuelto por corchetes. Las propiedades DisplayMember y ValueMember se establecen en la variable columnName para enlazar correctamente la fuente de datos al ComboBox. Si el DataTable no tiene filas, la DataSource se establece en Nothing para borrar los valores anteriores.

    ¡Espero que esto ayude!

Comments are closed.