PROBLEMA CON ADO. Estoy desesperado!!!Ayuda.
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.
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.
