Consulta de código implementado en visual basic sobre acceso a base de datos desde formularios

Hola muy buenas, voy a intentar explicar como mejor pueda la pregunta...
Para ponernos en situación es: Estoy con VB6 y access, tengo un formulario en el cual doy de alta animales que entran digámosle "comprados", los cuales los guardo en la tabla "animalescompra".
Cuando voy al otro formulario de vender animal porque me lo compra una persona, como es lógico tengo que seleccionar el animal que esta en "stock" que antes he añadido. Recupero los datos antes introducidos del animal y relleno los campos de propietario, telf, etc... Y lo guardo en la tabla de ventas porque el animal a sido ya vendido e inmediatamente tengo que hacer que se borre de la tabla animalescompra porque ese animal ya no esta en stock.
Mi problema es ese... No se como decirle que me borre el animal que ya no está en stock... Para hacerte una idea te dejo el trozo de código donde intento borrarlo...
He probado de todo y no doy con la solución, ¿podrías ayudarme por favor?
Gracias de antemano!
Private Sub bmodifi_Click()
SQL2 = "SELECT * " & _
      "FROM AnimalesVenta "
Set RS = DB.OpenRecordset(SQL2)
With RS
    .AddNew
    .Fields("raza") = Traza3.Text
    .Fields("sexo") = Combosex3.Text
    .Fields("chip") = Tchip3.Text
    .Fields("propietario") = Tpropietario3.Text
    .Fields("DNI") = Tdni3.Text
    .Fields("telf") = Ttelf3.Text
    .Fields("precio_venta") = Tpreciov3.Text
    .Fields("observaciones") = Tobservacion3.Text
    .Update
    MsgBox "Animal Vendido a '" & Tpropietario3.Text & "'", vbInformation, "Venta OK"
End With
SQL = "SELECT *" & _
    "FROM AnimalesCompra"
Set RS = DB.OpenRecordset(SQL)
SQL2 = "SELECT *" & _
     "FROM AnimalesCompra" & _
     "WHERE '" & RS("Chip") & "'" = Tchip3.Text
Set RS2 = DB.OpenRecordset(SQL2)
SQL3 = "Delete from AnimalesCompra " & _
      "WHERE '" & RS2("chip") & "'" = Tchip3.Text
Set RS3 = DB.OpenRecordset(SQL3)
End Sub
1

1 Respuesta

165.800 pts. Más de 35 años en la informática y más de 20 trabajando...
Por lo que veo estás trabajando con DAO.
Después de insertar el registro de la venta (bloque with), deberías cerrar el recordset con: rs. Close
Ahora bien, para borrar de la tabla de animalesCompra el registro que tiene el chip indicado en 'Tchip3.Text', tendrías que poner lo siguiente:
    sql3 = "delete from AnimalesCompra where chip='" & Tchip3.txt & "'"
    db.execute sql3
Estas dos líneas irían después de insertar el registro de venta.
Entiendo que el chip es un campo de tipo texto, por eso construyo el SQL poniendo el número de chip entre comillas.
Perdona tu respuesta es muy muy buena, es genial, pero tengo una duda je je
Que diferencia hay entre el db.execute sql3 que pones tu con el set RS=db.openrecorset(sql3) que pongo yo?
Perdona mi ignorancia, gracias.
Yo utilizo el execute cuando quiero ejecutar una consulta que modifica estructuras o datos.
No sé decirte si hay diferencia con el openrecordset porque esa instrucción la utilizo para recorrer los registros de una tabla o consulta de selección. Nunca la he usado para ejecutar consultas de acciones.
Si te funciona el openrecordset y te gusta más... usalo. Piensa que siempre hay varias formas de realizar una misma tarea y cada uno tenemos nuestras costumbres.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas