Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

¿Cómo guardar un nuevo registro?

Estas en el tema de ¿Cómo guardar un nuevo registro? en el foro de Bases de Datos General en Foros del Web. Creo un nuevo registro a través de un botón command1 y el procedimiento data1.recordset.addnew. Lo relleno normal y le doy a un command2 (para guardarlo) ...
  #1 (permalink)  
Antiguo 08/08/2006, 04:50
 
Fecha de Ingreso: agosto-2006
Mensajes: 9
Antigüedad: 17 años, 9 meses
Puntos: 0
¿Cómo guardar un nuevo registro?

Creo un nuevo registro a través de un botón command1 y el procedimiento data1.recordset.addnew. Lo relleno normal y le doy a un command2 (para guardarlo) con el procedimiento data1.recordset.update y me da error: Update o CancelUpdate sin AddNew o Edit.

Y claro, si no guardo el registro si muevo con data1.recordset.move(next, last...) me da error.

Gracias

Edito: He buscado por todas partes y veo que pone que el recordset.update va después del recorset.addnew o edit, y así funciona. Pero el caso es que a mi no, no se que puede estar pasando.

Última edición por Capirex; 08/08/2006 a las 05:38 Razón: Faltan cosas
  #2 (permalink)  
Antiguo 08/08/2006, 17:04
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
has verificado que el recorset que tienes no sea solo de lectura y puedas hacer actualizaciones y/o nuevas incorporaciones?

Data1.Recordset.AddNew debe dejarte en blanco todos los campos (verifica que los command no los estas incluyendo) y no deberia darte ningun problema al hacer el Data1.Recordset.Update


De preferencia si tienes botones command de movimiento (anterior, siguiente, primero, ultimo) deberias de desactivarlo al estar haciendo la incorporacion del nuevo registro.

Ej de un guardar:

Cita:
Data1.Recordset.Update
MsgBox "Datos guardados correctamente", vbInformation, "Guardado OK"
Data1.Recordset.MoveFirst
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #3 (permalink)  
Antiguo 13/08/2006, 13:20
 
Fecha de Ingreso: agosto-2006
Mensajes: 9
Antigüedad: 17 años, 9 meses
Puntos: 0
¿Como sé si el recordset es sólo de lectura?
¿En tal caso, como hago para que se pueda escribir?

Antes me funcionaba bien, no entiendo que le debe pasar ahora

Gracias.
  #4 (permalink)  
Antiguo 13/08/2006, 13:40
 
Fecha de Ingreso: agosto-2006
Mensajes: 9
Antigüedad: 17 años, 9 meses
Puntos: 0
Ahora el error es otro: Me dice que la acción ha sido cancelada por el objeto asociado. Ésto se debe a que después de hacer cambios en los datos correspondientes, le doy a un botón de mover relacionado con el data.

Ahora le di a .update justo después de .addnew, así no me da error. Pensaba que funcionaría puesto que representa que le dices que te cree uno vacío, y luego lo modificas, pero aqui surge el problema ya que después de modificar da error al mover.

Que dilema

Gracias.
  #5 (permalink)  
Antiguo 14/08/2006, 02:42
 
Fecha de Ingreso: agosto-2006
Mensajes: 9
Antigüedad: 17 años, 9 meses
Puntos: 0
Ya he probado sencillamente un boton con addnew y otro con update y me va bien. El problema es que necesito un carro en medio y si lo hago me da error.

Aquí el cmdNuevo

Cita:
If btNuevoEvento.Caption = "&Nuevo" Then
NuevoEvento
btNuevoEvento.Caption = "&Guardar"
ElseIf btNuevoEvento.Caption = "&Guardar" Then
Guardar
btNuevoEvento.Caption = "&Nuevo"
End If
Sencillo, ¿No? He pasado a NuevoEvento y Guardar el contenido que iria ahi en medio de forma que no estorbe y a mi entender debería ir mejor.

Aquí la Private Sub NuevoEvento

Cita:
DataF1.Recordset.MoveLast
DataF1.Recordset.AddNew

Dim NuevoEvento As String

NuevoEvento = InputBox("¿Carrera o Prueba?", "Seleccione", "Carrera")

If NuevoEvento = "Carrera" Or NuevoEvento = "carrera" Then
Carrera = 0
DataF1.Recordset.MoveFirst
Do While Not DataF1.Recordset.EOF
If Val(txtCarrera.Text) > Carrera Then
Carrera = Val(txtCarrera.Text)
End If
DataF1.Recordset.MoveNext
Loop
txtCarrera.Visible = True
lblCarrera.Visible = True
txtPrueba.Visible = False
lblPrueba.Visible = False
txtCarrera.Text = Carrera + 1
ElseIf NuevoEvento = "Prueba" Or NuevoEvento = "prueba" Then
Prueba = 0
DataF1.Recordset.MoveFirst
Do While Not DataF1.Recordset.EOF
If Val(txtPrueba.Text) > Prueba Then
Prueba = Val(txtPrueba.Text)
End If
DataF1.Recordset.MoveNext
Loop
txtPrueba.Visible = True
lblPrueba.Visible = True
txtCarrera.Visible = False
lblCarrera.Visible = False
txtPrueba.Text = Prueba + 1
Else
MsgBox "Ha introducido un texto erróneo"
DataF1.Recordset.CancelUpdate
DataF1.Recordset.MoveLast
Exit Sub
End If

btEstadisticas.Enabled = False
'btGuardar.Visible = True
'btNuevoEvento.Visible = False
btOtrosFoto.Caption = "&Logo"
btOtrosFoto.Enabled = False
txtOtros.Visible = True
Line7.Visible = True
imgEquipo.Visible = False
btSiguiente.Enabled = False
btAnterior.Enabled = False
btUltimo.Enabled = False
btPrimero.Enabled = False
btBorrar.Enabled = False
btNuevoEvento.Enabled = False
Desbloquear
AñadirAComboBox
VerCombos
Puede ser que aquí esté el problema, pienso que alomejor se deba a que en los Do While Not uso movenext y todo eso, pero es que lo necesito usar.

Aqui la Private Sub Guardar

Cita:
DataF1.Recordset.Update
btOtrosFoto.Enabled = True
btUltimo.Enabled = False
btSiguiente.Enabled = False
btAnterior.Enabled = True
btPrimero.Enabled = True
btBorrar.Enabled = True
btNuevoEvento.Visible = True
btGuardar.Visible = False
btEstadisticas.Enabled = True
Bloquear
EsconderCombos
DataF1.Recordset.Update
cmbOrdinales.Clear
cmbEquipo.Clear
cmbCircuito.Clear
cmbAsfalto.Clear
cmbPrimerPiloto.Clear
cmbSegundoPiloto.Clear
cmbPilotoDePruebas.Clear
A ver si encontramos el problema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:45.