Access - no graba dos iguales

 
Vista:

no graba dos iguales

Publicado por rick hunter (6 intervenciones) el 28/06/2006 00:40:19
hola a todos
tengo un problema que no puedo solucionarlo . tengo un programita en vb 6.0 con una base de datos en acces ....
y my consulta es porque cuando me guarda el recorset me borra el que estaba ...por ej. quiero grabar los siguientes datos..
fecha turno aceite
y me graba el ultimo registro y me borra los anteriores y no me deja
grabar una misma fecha con distinto turno . o viceversa.
aqui le muestro el codigo de guardar

If rs.BOF And rs.EOF And rs1.BOF And rs1.EOF And rs2.BOF And rs2.EOF Then
rs.AddNew
rs1.AddNew
rs2.AddNew
Else
rs.Edit
rs1.Edit
rs2.Edit
End If
rs!encargado = Text1.Text
rs!playeros = Text2.Text
rs!fecha_de_vta = Text47.Text
rs!turno = Combo1.Text
rs!hielo = Text37.Text
rs!ptz = Text43.Text
rs!arranques = Text45.Text
rs!totalgeneral = Text76.Text
rs!recaudado = Val(Text77.Text)
rs!diferencia = Text78.Text
rs.Update
rs2!fecha_de_vta = Text47.Text
rs2!turno = Combo1.Text
rs2!medidor1 = Text11.Text
rs2!medidor2 = Text12.Text
rs2!medidor3 = Text13.Text
rs2!medidor4 = Text14.Text
rs2!medidor5 = Text15.Text
rs2!medidor6 = Text16.Text
rs2!medidor7 = Text17.Text
rs2!medidor8 = Text18.Text
rs2!total = Text73.Text
rs2.Update
rs1!fecha_de_vta = Text47.Text
rs1!turno = Combo1.Text
rs1!aceite1_supera = Text48.Text
rs1!aceite2_2500 = Text49.Text
rs1!aceite3_5000 = Text50.Text
rs1!aceite4_supera = Text51.Text
rs1!aceite5_2500 = Text52.Text
rs1!aceite6_5000 = Text53.Text
rs1!total_aceites = Text72.Text
rs1.Update
Text3.Text = Text11.Text
Text11.Text = ""
Text19.Text = ""
Text27.Text = ""
Text4.Text = Text12.Text
Text12.Text = ""
Text20.Text = ""
Text28.Text = ""
Text5.Text = Text13.Text
Text13.Text = ""
Text21.Text = ""
Text29.Text = ""
Text6.Text = Text14.Text
Text14.Text = ""
Text22.Text = ""
Text30.Text = ""
Text7.Text = Text15.Text
Text15.Text = ""
Text23.Text = ""
Text31.Text = ""
Text8.Text = Text16.Text
Text16.Text = ""
Text24.Text = ""
Text32.Text = ""
Text9.Text = Text17.Text
Text17.Text = ""
Text25.Text = ""
Text33.Text = ""
Text10.Text = Text18.Text
Text18.Text = ""
Text26.Text = ""
Text34.Text = ""
Text73.Text = ""
Text74.Text = ""
Text48.Text = Text54.Text
Text54.Text = ""
Text60.Text = ""
Text66.Text = ""
Text49.Text = Text55.Text
Text55.Text = ""
Text61.Text = ""
Text67.Text = ""
Text50.Text = Text56.Text
Text56.Text = ""
Text62.Text = ""
Text68.Text = ""
Text51.Text = Text57.Text
Text57.Text = ""
Text63.Text = ""
Text69.Text = ""
Text52.Text = Text58.Text
Text58.Text = ""
Text64.Text = ""
Text70.Text = ""
Text53.Text = Text59.Text
Text59.Text = ""
Text65.Text = ""
Text71.Text = ""
Text72.Text = ""
Text75.Text = ""
Text35.Text = Text37.Text
Text37.Text = ""
Text39.Text = ""
Text41.Text = ""
Text43.Text = Text44.Text
Text44.Text = ""
Text45.Text = Text46.Text
Text46.Text = ""
Text76.Text = ""
Text77.Text = ""
Text78.Text = ""
Text1.Text = ""
Text2.Text = ""
Text1.SetFocus
cualquier cosa al que este interesado le mando el programa para que lo vea...y aqui esta el codigo de la consulta
Text1.Text = "select " & _
"fecha_de_vta,turno,aceite1_supera,aceite2_2500,aceite3_5000,aceite4_supera,aceite5_2500,aceite6_5000,total_aceites " & _
"from aceites order by fecha_de_vta desc"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Problema al guardar registros en VB 6.0 y solución para evitar la eliminación de registros anteriore

Publicado por Alejandro (4142 intervenciones) el 19/07/2023 23:04:41
El problema que estás enfrentando al guardar los registros es que estás utilizando el método `AddNew` para agregar nuevos registros en lugar de buscar el registro existente correspondiente a la misma fecha y turno. Esto hace que siempre se agregue un nuevo registro en lugar de actualizar el registro existente.

Aquí tienes una solución para evitar la eliminación de registros anteriores y actualizar el registro existente en lugar de agregar uno nuevo:

1. Antes de guardar los registros, realiza una consulta para buscar el registro correspondiente a la misma fecha y turno en la base de datos.

2. Si se encuentra un registro existente, utiliza el método `Edit` para editarlo. Si no se encuentra un registro existente, utiliza `AddNew` para agregar uno nuevo.

3. Asigna los valores a los campos correspondientes del registro.

4. Utiliza el método `Update` para guardar los cambios realizados en el registro.

Aquí tienes un ejemplo de cómo puedes modificar tu código para implementar esta solución:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
' Realiza una consulta para buscar el registro correspondiente a la misma fecha y turno
rs.Open "SELECT * FROM aceites WHERE fecha_de_vta = '" & Text47.Text & "' AND turno = '" & Combo1.Text & "'", cn, adOpenKeyset, adLockOptimistic
 
' Verifica si se encontró un registro existente
If Not rs.EOF Then
    rs.Edit ' Edita el registro existente
Else
    rs.AddNew ' Agrega un nuevo registro
End If
 
' Asigna los valores a los campos del registro
rs!encargado = Text1.Text
rs!playeros = Text2.Text
rs!fecha_de_vta = Text47.Text
rs!turno = Combo1.Text
rs!hielo = Text37.Text
rs!ptz = Text43.Text
rs!arranques = Text45.Text
rs!totalgeneral = Text76.Text
rs!recaudado = Val(Text77.Text)
rs!diferencia = Text78.Text
 
' Guarda los cambios en el registro
rs.Update
 
' Cierra el recordset
rs.Close

Este código busca un registro existente utilizando una consulta que verifica la fecha_de_vta y el turno en la tabla `aceites`. Si se encuentra un registro existente, se utiliza `Edit` para editarlo, y si no se encuentra, se utiliza `AddNew` para agregar uno nuevo. Luego se asignan los valores a los campos correspondientes y se guarda el registro utilizando `Update`.

Recuerda ajustar el código según la estructura de tu base de datos y los nombres de los campos.

Espero que esta solución te sea útil. ¡Estoy aquí para ayudarte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar