Formularios

Hola experto, necesito tu ayuda en la siguiente aplicación, tengo una base de datos hecha en access, con las siguientes tablas: Clientes, Correlativo
luego cree un formulario, para el ingreso de cliente y he creado unos botones Nuevo_Ingreso y Grabar, cuando haga clic en Nuevo_Ingreso este debe generar un nuevo registro e incrementar el código automáticamente, para ello enlazo el código con la tabla correlativo con el siguiente código
------
Private Sub nuevo_Click()
Recordset.MoveLast
cn.ConnectionString = "provider=microsoft.jet.oledb.4.0; data source= \\SVRCOMAS\Shares\sandra\Por Hacer\lazaro.mdb"
cn.CursorLocation = adUseClient
con.Open
rs.Open "select * from correlativo", cn, adOpenDynamic, adLockOptimistic
Dim txt As String
Dim Num As String
Dim newCorrelativo As String
txt = Left(IdCliente, 5)
Num = Right("000" & Trim(Str(Val(Right(IdCliente, 3)) + 1)), 3)
IdCliente = txt & Num
NombreCompa.Value = ""
NombreContacto.Value = ""
RUDNI.Value = ""
Direccion.Value = ""
Distrito.ListIndex = -1
Me.fono__Casa.Value = ""
fonoTrabajo.Value = ""
Fax.Value = ""
Celular.Value = ""
Mail.Value = ""
NombreCompa.SetFocus
txticontador.Value = Recordset.RecordCount & " Registros"
End Sub
----
El correlativo funciona excelente, pero tengo varios problemas:
1.- El correalativo se incrementa en el segundo registro de donde me encuentre
2.-Aveces me sale un error que dice que no tengo el usuario de la máquina ha situado la base de datos en un estado que impede que sea abierta o bloqueada
3.-No me limpia los txt
Y por último cómo haga para que el correlativo también se incremente y guarde ese el código más 1
Gracias de antemano amigo por tu generosa ayuda
Respuesta
1
Tu programación deberá de quedar más o menos como sigue:
Private Sub nuevo_Click()
cn.ConnectionString = "provider=microsoft.jet.oledb.4.0; data source= \\SVRCOMAS\Shares\sandra\Por Hacer\lazaro.mdb"
cn.CursorLocation = adUseClient
cn.Open
rs.Open "select * from correlativo", cn, adOpenDynamic, adLockOptimistic
Recordset.MoveLast
Dim txt As String
Dim Num As String
Dim newCorrelativo As String
txt = Left(IdCliente, 5)
Num = Right("000" & Trim(Str(Val(Right(IdCliente, 3)) + 1)), 3)
IdCliente = txt & Num
NombreCompa.Value = ""
NombreContacto.Value = ""
RUDNI.Value = ""
Direccion.Value = ""
Distrito.ListIndex = -1
Me.fono__Casa.Value = ""
fonoTrabajo.Value = ""
Fax.Value = ""
Celular.Value = ""
Mail.Value = ""
NombreCompa.SetFocus
txticontador.Value = Recordset.RecordCount & " Registros"
End Sub
Si tienes en algún elemento del recordset el último dato del correlativo lo puedes incrementar:
mivariable = recordset.fields("correlativo").value + 1
Ahora, los datos a insertar serían directos a la tabla mediante un insert, el recordset de datos anteriores lo utilizaría para una consulta y no para otra cosa.
Los controles deberían de limpiarse en forma correcta con el código pero faltaría más información de lo que realmente estas haciendo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas