Borrar registro de sql con visual basic 6.0

Esto necesito... Hacer un menu para sql server 2005 con visual 6.0 como herramienta.
La idea es que la opción permita borrar un registro en una tabla llamada invoice, los campos son no_invoice, co, letra, qty y estilo. Al borrarse se cambian los datos en otra tabla que se llama export con los mismos capos solo que en esta tabla se llaman no_oc, item, cantid, estilo.
También antes de borrar el campo debe salir una ventana de aviso preguntando si esta seguro que desea borrar el registro.
Me dicen que todo eso se puede hacer en una sola line o que es muy sencillo hacerlo
Pero yo no se como, soy nuevo en esto y estoy a prendiendo
hasta ahora esto es lo que ue he hecho
Option Explicit
Dim cnR As ADODB.Connection
Dim rsR As ADODB.Recordset
Dim i As Integer
Private Sub Form_Load()
i = 0
End Sub
Private Sub mnuRegisters_Click()
Dim fxConectar As String
Dim coda As String
Set cnR = New ADODB.Connection
 coda = InputBox("Type the corter order code", "Order cort")
 Set rsR = New ADODB.Recordset
 If (rsR.State = adStateOpen) Then
     rsR.Close
 End If
 Set cnR = New ADODB.Connection
cnR.CursorLocation = adUseClient
cnR.Open fxConectar = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=practica;Data Source=IT-ASIST"
'cnR.Open fxConectar("s_gutierrez117071985", "s_gutierrez")
    asigna1
    fxConectar = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=practica;Data Source=IT-ASIST"
End Sub
Public Function fxConectar(llave As String, nombre As String)
Set cnR = New ADODB.Connection
cnR.CursorLocation = adUseClient
cnR.Open fxConectar = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=practica;Data Source=IT-ASIST"
'cnR.Open fxConectar("s_gutierrez117071985", "s_gutierrez")
    asigna1
    fxConectar = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=practica;Data Source=IT-ASIST"
End If
rsR.Open "SELECT co, letra, qty FROM invoice WHERE " _
& "codtela='" & Trim(coda) & "' AND dueno=3 ORDER BY yards", cnR, adOpenDynamic, adLockReadOnly
If Not (rsR.BOF And rsR.EOF) Then
    frmListas.fg.Rows = rsR.RecordCount + 1
    Do While Not (rsR.EOF)
        frmListas.fg.TextMatrix(i, 0) = Trim(rsR!co)
        frmListas.fg.TextMatrix(i, 1) = Trim(rsR!letra)
        frmListas.fg.TextMatrix(i, 2) = Trim(rsR!qty)
        frmListas.fg.TextMatrix(i, 6) = rsR!yards + 0
        i = i + 1
        rsR.MoveNext
    Loop
    frmListas.Show
End If
'cnR.Execute
Delete From invoice
Where
     Select invoice.no_invoice, invoice.co,invoice.letra, invoice.qty, invoice.estilo, no_oc.export, item.export,
     cantid.export,estilo.export From invoice,export Where
     invoice.no_invoice , invoice.co, invoice.letra, invoice.qty, invoice.estilo = no_oc.export, item.export,
     cantid.export , estilo.export
End If
<a href="eliminar.php" onclick="return confirm('¿Seguro?')">Eliminar</a>
 End If
End Function
Ayuda por favor.. No entiendo

4 Respuestas

Respuesta
1
Si me mandas el código que has desarrolado hasta ahora seria más fácil pa mi.
Copie el código a un proyecto y da la impresión que faltan algunos eventos. También me ayudaría saber en donde debería star esa opción de eliminar registro.
Si puedes tu bd también!
Me olvidaba.. mi correo: [email protected]
invoce
no_invoice  co   letra    qty    estilo      
                                     18        
                                      0  
export
no_oc item  cantid  estilo    unit_expo    unit_disp_expo          
                                                   9 9
                                                  18
La idea es más o menos así... cuando el campo qty en invoice refleja un valor este se divide o no en los campos unit_expo o unit_dips_expo.. según si se exportaron o no... la idea de eliminar la tabla de arriba es porque se cancelo co que es orden de corte entonces unit_expo en export debería ser 18 porque se elimino la orde de corte en invoice y esta todo disponible pra exportar.
Gracias por su ayuda...
Yo quiero borrar el registro de la primer tabla y un mensaje que pregunte si esta seguro o no... y lo que tengo desarrollado es el alboroto que ve arriba... que no funciona para nada, pero es parte de mi ignorancia. Esas son cosas que copie de otro lado intentando hacer lo que quiero...
Gracias
Ordenate mejor sino me confundirás a mi también.
Mejor cuéntame el caso de studio completo para poder entender.
Si tienes una bd hecha y código hecho, mándamelo de todas maneras!
Las dos tablas se las coloco para que tenga una idea mejor de lo que quiero...
Pero en resumen solo quiero borrar la primera, la segunda no y luego un aviso que pregunte si esta seguro o no... le coloque los items de ambas tablas porque entiendo que se deben igualar o algo así.
El campo co equivale al numero de orden de corte, entonces el empledo viene y elimina esa orden de corte en la primera tabla y la segunda queda igual eso no importa... pero cuando le de borrar que el sistema le pregunte si esta seguro que desea borra la orden 629 por ejemplo...
Por favor agradezco mucho tu ayuda...
ya ta
Respuesta
1
Para borrar es delete si tu base de datos esta normalizada, la eliminación la podes hacer en cascada. (Borras un registro y se borra automático en la otra tabla)
Sino es así, vemos de que manera borrarlo.
La pregunta para que te diga si quieres borrarlo es un msgbox
If MsgBox("¿Seguro Desea Borrar la Cuenta Corriente?", vbExclamation + vbYesNo, "Eliminar Cta.Cte.") = vbYes Then
si el usuario le da click en yes entra en el if.
Despues como usas recordet y para no demorar, Y NO ESTA NORMALIZADA, usas 2 delete
2 consultas deletes una para la primer tabla y otra para la segunda, asi de sencillo
delete from tabla where... aca en el where esta la clave de todo si tenes los campos necesarios.
Bueno empecemos con eso haber como va
Es que esas son cosas que he copiado de otros lados, tratando de ver si podía hacerlo solo.
Seria mejor si me puede ayudar partiendo de cero y quiero borrar de una tabla para que el registro de la segunda quede como sino se bajo del inventario... comprende.
Y el aviso es por seguridad para sercorarse antes de borrar, si es esa la tabla realmente.
Gracias de antemano por su ayuda
El aviso ya esta, si copias ese y le agregas tu pregunta y cerras el if funciona.
Después ¿esta la base sql normalizada?
¿tenes los campos del where para hacer el delete?
Respuesta
1
De donde sacaste ese código, porque tienes comandos o funciones incompletas o con mala sintaxis y porque tienes una linea de código php al final de todo el código que enviaste.
¿Esto lo copiastes de algún sitio y estas tratando de utilizarlo?
Porque no entiendo muy bien, tienes toda la base de datos y todo el código, para que me lo envíes.
Esta raro
Respuesta
1
Efectivamente eso se hace en una sola linea.
Vamos por partes.
1) Haz un Trigger en la BD de SQL Server para que cuando borres un campo de la tabla principal (INVOICE) te borre los de la secundaria ( EXPORT). Puedes ver como se hace un trigger en la ayuda de SQL server ( en español los traducen como disparadores). Con eso te queda resuelta la 2ª parte que es mantener la integridad referencial.
2) Para borrar en SQL se usa la instrucción DELETE y lo único que necesitas es la PORQUE del campo que la debes tener en el registro. Si la tabla no tiene PORQUE créale una. Tu único problema es disponer de la PORQUE.
Si pConn es la conexión activa puedes hacerlo de dos formas:
dim TmpSQL as string
tmpSQl="DELETE FROM INVOCE WHERE CAMPOPAK=VALOPK"
PConn. Execute TmpSQL ' Con eso ya se ha borrado los dos registros.
Si lo que tienes es un cursor abierto y te estás moviendo adelante y atrás por un RS usa.
RS.Delete y tambien se borrara.
Personalmente me gusta más la 1ª opción, pero soy un poco purista.
De todas formas, cuando puedas hazte un tutorial de SQl, te ayudará mucho en los desarrollos.
Le agradezco mucho...
Podría ponerlo todo en una linea para verlo completo, incluyendo la ventana emergente que avise al usuario si esta seguro de borrar o no...
Gracias
No puedo por que no se la PORQUE. He visto que tienes una where un tanto compleja para la operación de borrar.
De todas formas la instrucción seria algo como...
If InputBox ("Desea eliminar el registro",VbYesNo)= VbYes then 
<span style="white-space: pre;"> </span>pConn.execute "Delete from Invoice where ....."
End if
disulpe que es la PORQUE para facilitarle el dato por favor
Gracias
La Porque es la Primery Key de la tabla ( un campo o campos cuyo valor no se repite nunca).
Si vas ha ir haciendo temas de programación, plantéate lo del tutorial de SQL, es la base de todo y sin unos conocimientos mínimos te va a costar los trabajos mucho más.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas