Проблема сохранения данных из ComboBox в VB6 - PullRequest
0 голосов
/ 08 января 2020

У меня ComboBox, но проблема в том, что когда я пытаюсь сохранить выбранное значение, я загружаю ComboBox со значениями SQLServer, и приложения показывают мне следующую ошибку:

[Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] Неверное имя столбца 'celular'.

Я загружаю ComboBox со значениями из SQL:

Private Sub Form_Load()
   Set rs = New Recordset
   rs.CursorLocation = adUseServer

   Call IniciarConexion

   CargaIDTipoNumero
End Sub

Private Sub CargaIDTipoNumero()
    cmbAddExample(indice).Clear
    rs.Open "SELECT tipo FROM tipo_Numero", cnn, adOpenDynamic, adLockOptimistic
    Do While rs.EOF = False
        cmbAddExample(indice).AddItem rs!tipo
        rs.MoveNext
    Loop
    rs.Close
End Sub

Private Sub IniciarConexion()
    Set cnn = New ADODB.Connection
    With cnn
        .CursorLocation = adUseClient
        .Open "PROVIDER=MSDASQL;driver={SQL Server};server=server;uid=uid;pwd=pwd;database=database;"
    End With
End Sub

Таблица, в которой сохраняются значения ComboBox:

CREATE TABLE ejTres(
    combo int
)

Таблица с загрузкой ComboBox:

CREATE TABLE tipo_Numero(
    idTipo INT IDENTITY (1,1) NOT NULL, 
    tipo VARCHAR (10) NOT NULL, 
    CONSTRAINT pk_tipo PRIMARY KEY(idTipo)
)

INSERT INTO tipo_Numero(tipo)
VALUES('celular'), ('fijo')

И Button, где я сохраняю значения:

Private Sub btnGuardar_Click()
Dim i As Integer
Dim CM As ADODB.Command

Set CM = New ADODB.Command
Set CM.ActiveConnection = cnn
    CM.CommandType = adCmdText
    CM.CommandText = "INSERT INTO ejTres (combo) VALUES (?)"
    CM.Parameters.Append CM.CreateParameter("@combo", adInteger, , , cmbAddExample(i))
    CM.Execute , , adExecuteNoRecords
End Sub

1 Ответ

1 голос
/ 08 января 2020

Сосредоточив внимание только на том, как добавить значение Identity в вашу таблицу, попробуйте что-то вроде следующего:

''as you load the combo, also save the identity value

Do While rs.EOF = False
   cmbAddExample(indice).AddItem rs!tipo
   cmbAddExample(indice).ItemData(cmbAddExample(indice).NewIndex) = rs!idTipo
   rs.MoveNext
Loop


''now retrieve the identity value when creating the parameter

id = cmbAddExample(i).ItemData(cmbAddExample(i).ListIndex)

Set CM = New ADODB.Command
Set CM.ActiveConnection = cnn
CM.CommandType = adCmdText
CM.CommandText = "INSERT INTO ejTres (combo) VALUES (?)"
CM.Parameters.Append CM.CreateParameter("@combo", adInteger, , , id)
CM.Execute , , adExecuteNoRecords
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...