mira ya probé el código, porque en verdad que se me hace raro que no te funcione o mejor dicho que no guarde entonces aqui te pongo el codigo que usé:
Todo esto primero:
Código vb:
Ver originalPrivate Type Productos
codigo As Integer
nombre As String
End Type
Dim tabla() As Productos
Dim cn As ADODB.Connection
Dim res As ADODB.Recordset
Dim conexion As String
Luego:
el botón guardar solo llama a la función guardar
Código vb:
Ver originalPrivate Sub Command2_Click()
guardar
End Sub
Código vb:
Ver originalSub guardar()
Set res = New ADODB.Recordset
For i = 0 To UBound(tabla) - 1
With res
.ActiveConnection = cn
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open "INSERT INTO productos VALUES (" & tabla(i).codigo & ",'" & tabla(i).nombre & "')"
End With
Next
res.Open "SELECT * FROM productos"
Set DataGrid1.DataSource = res
End Sub
en el load del formulario coloco esto:
Código vb:
Ver originalPrivate Sub Form_Load()
Set cn = New ADODB.Connection
conexion = "driver={MySQL ODBC 3.51 Driver};" _
& "SERVER=localhost;" _
& "DATABASE=prueba;" _
& "UID=root;PWD=utm123;OPTION=3"
cn.ConnectionString = conexion
cn.Open
ReDim tabla(0)
List1.AddItem "Jamón"
List1.AddItem "Carne"
List1.AddItem "Leche"
List1.AddItem "Queso"
End Sub
En el evento clic de la lista va esto:
Código vb:
Ver originalPrivate Sub List1_Click()
Dim bandera As Boolean
Text1.Text = List1.ListIndex
For f = 0 To UBound(tabla) - 1
If tabla(f).codigo = Val(Text1.Text) Then
bandera = True
Exit For
End If
Next f
If Not bandera Then
f = UBound(tabla)
tabla(f).codigo = Val(Text1.Text)
tabla(f).nombre = List1.Text
ReDim Preserve tabla(f + 1)
Else
MsgBox "El valor ya ha sido agregado"
End If
End Sub
y en el unload del formulario cierro la conexión así: cn.close.
Si te fijas en la funcion guardar hace referencia a un data grid, simplemente lo coloqué para visualizar los datos que se han guardado.
Y eso es todo, prueba y comentas lo que suceda