PROBLEMA CON ADO. Estoy desesperado!!!Ayuda.

davidvalo
27 de Marzo del 2005
Con ado, pretendo que el usuario cree una tabla Access. La dinámica es la siguiente: una vez creada la tabla, el usuario va creando campos e introduciendo datos. Crea un campo e introduce los datos de dicho campo, crea otro campo e introduce los datos de ese otro campo y así sucesivamente. El código que introduce los datos que escribe el usuario es el siguiente:

Dim Conexion1 As String

Conexion1 = "provider=microsoft.jet.oledb.4.0;data source =" & NombreBdd & " "
Set MiConexion1 = New ADODB.Connection

If MiConexion1.State = 1 Then MiConexion1.Close

MiConexion1.ConnectionString = Conexion1
MiConexion1.Open

Set MiRecordset = New ADODB.Recordset


MiRecordset.Open NombreTabla, MiConexion1, adOpenDynamic, adLockOptimistic

MiRecordset.AddNew

MiRecordset.MoveFirst
While MiRecordset(NombreCampo) <> ""
MiRecordset.MoveNext
Wend

MiRecordset(NombreCampo) = Dato_suministrado_por_el_usuario
MiRecordset.Update

MiConexion1.Close

Tras abrir la tabla, la clave en este código es el bucle while:
MiRecordset.MoveFirst
While MiRecordset(NombreCampo) <> ""
MiRecordset.MoveNext
Wend

Cada vez que se va a introducir un dato, sitúo el recordset en la primera fila y a partir de ahí comienza a bajar hasta que se encuentra una celda vacía del campo en cuestión y en dicha celda incluye el dato suministrado por el usuario. Este código funciona correctamente cuando ninguno de los campos (fields) está indexado (ie, es un índice). Así por ejemplo, la siguiente tabla se crea correctamente:

1 Madrid 3mill
2 Barcelona 1.5mill
3 Valencia 0.8mill

Mi problema aparece cuando alguno/s de dichos campos es un índice. Si el primer campo: 1, 2, 3 se crea como índice. Al crear la tabla Access aparece:

Barcelona 3mill
Valencia 1.5mill
0.8 mill


1 Madrid
2
3

Le he dado muchas vueltas y no entiendo por qué las tablas no se crean como yo quiero cuando alguno/s de los campos son índices. ¿Alguien sabe por qué?. ¿Alguna sugerencia?, teniendo en cuenta que siempre se incluyen los datos de un campo, luego los del siguiente y así sucesivamente. No me planteo crear matrices para almacenar datos. Gracias.