Problema con access y visual basic

Nightbreed
10 de Marzo del 2006
Hola,

Tengo creada una base de datos en Access y unida a un programilla en visual basic mediante un control DAO. LA base de datos en access (además de otros campos que no dan problemas) tiene dos campos que son uno autonumérico (que nos da el número de informe) y el campo de la fecha que coge automáticamente la del día en cuestión. El problema es que esos campos en el visual a la hora de introducir un nuevo registro deberían ser mostrados y lo hace bien excepto para el primer registro que nunca sale el numero de informe y la fecha aunque sí lo guarda en la tabla.
Mi código para añadir nuevos registros a la tabla en cuestión es éste:
Primero le indico el nombre de la base de datos.
Luego situo el recordset.movelast
y luego añado recordset.addnew

Esto funciona correctamente para todos excepto para el primer registro.

Un saludo y gracias

epa
10 de Marzo del 2006
el problea si no me equivoco, esta en el movelast.
Si la tabla esta vacia, devuelve error, deves especificar, que en caso de que la tabla esta vacia directamente agregue el nuevo registro.
Espero sirca, saludos

Nightbreed
10 de Marzo del 2006
Yo también pensaba que era algo de eso, pero he probado con lo que me has comentado y el problema es que no da error ni nada sino que no muestra el campo autonumerico y la fecha que están metidas en la tabla (logicamente tengo bien unidos los textbox a los campos de la tabla y debería hacerlo, de hecho lo hace en todos excepto en el primero). Lo seguiré mirando.

Hay otra cosa que me preocupa más, a ver si puedo explicarlo claramente:
Tengo un formulario desde el cual puedo dar de alta clientes (este formulario está unido a otra tabla access), en el mismo formulario hay un boton que agrega mantenimientos a cada cliente (que tb está unido a una tabla mantenimientos), el caso es que tengo puesto que cuando se pulse el boton me abra el formulario de mantenimientos, abra la tabla de mantenimientos, lo situe en el ultimo registro (en caso de no estar vacia) y añada uno nuevo. Y me da el siguiente error:
Variable de tipo object o variable de bloque with no está establecida. (siempre indicando la linea en la que hago el movelast o en su defecto la del addnew).
El formulario por independiente funciona porque he probado a desligarlo de ahí, pero el problema lo da cuando llamo a un formulario desde otro y le digo que me mueva los registros y me reserve espacio para uno nuevo.
Espero haberme explicado porque no tengo ni idea de que puede ser y he probado de todo.

Un saludo y gracias

epa
10 de Marzo del 2006
La verdad no se me ocurre que puede ser, pero fijate que los recordset los abra en modo Dynaset. SI esto no funciona, en caso que estes usando controles Data, prueba abrir la base de datos como objeto DAO:

Por Ejemplo: (a nivel de modulo)

dim Ruta as string
Public db as Database (en las referencias deve estar seleccionado el componente ''Microsoft DAO 3.51 Object Library'')
Luego en el prosedimiento Main

Sub Main()
Ruta = App.path & "basededatos.mdb"
set db = DBEngine.OpenDatabase(Ruta)
frmPrincipal.Show
End Sub

Luego en el formulario de mantenimientos:

Dim rs as Recordset

Private Sub Form_Load()
set rs = db.OpenRecordset("Tabla", bdOpenDynaset)
End Sub

Luego con el la propiedad Fields() especificas la columna (puede ser por nombre o por indice)

EDGAR
10 de Marzo del 2006
Hola, el movelast no es necesario, simplemente agrega el nuevo registro, se almacenara en el ultimo registro de igual manera