Hola, soy principiante en visual basic con Sql
Hola otra vez, estoy haciendo un proyecto para graduarme del bachiller pero necesito ayuda ya que tengo unos errores en la ruta con el SQL de 2 tablas relacionadas con el nombre de CEDULA, ¿es por eso que no me modifica ni me elimina pero anteriormente si me hacia la acción pero ahora no. Quien puede ayudarme?
1 respuesta
Respuesta de Roberto Alvarado
1
1

Roberto Alvarado, Desarrollador de aplicaciones en plataforma
¿Cuáles son los errores y en que linea de código te aparecen?

Me aparece este error (PUEDE QUE EL CAMPO 'CEDULA' especificado haga referencia a más de una tabla de las mostradas en la clausula FROM DE LA INSTRUCCIÓN SQL)
en el mireg.execute
en el mireg.execute

Aquí tengo el código de modificar:
Private Sub modificar_Click()
preg$ = MsgBox("¿Deseas modificar este registro?", vbYesNo, "Advertencia") 'ventana de pregunta si quiere hacerle cambios en el usuario
If preg$ = vbYes Then 'si es si entonces
Dim mireg As ADODB.Command
Set mireg = New ADODB.Command 'abrir el registro de base de datos
mireg.CommandType = adCmdText 'mi registro es de tipo texto en los campos
Set rg = New ADODB.Recordset 'abrir base de datos'
SQL = "select * from bd_fulong" 'seleccionar todo de la tabla de fulong
rg.Open SQL, cn, adOpenDynamic, adLockOptimistic 'abrir la conexion, ruta de forma dinamico y optico
var1 = Me.Text1.Text
var2 = Me.Text8.Text
var3 = Me.Text2.Text
var4 = Me.Text3.Text
var5 = Me.Text4.Text
var6 = Me.Text5.Enabled = False
var7 = Me.Text6.Enabled = False
var8 = Me.Text7.Enabled = False
mireg.CommandText = "update bd_fulong, ordenes_historico set Cédula=" & var3 & ",Nombre='" & var1 & "',Apellido='" & var2 & "',Dirección='" & var4 & "',Teléfono=" & var5 & ",plato='" & var6 & "',costo=" & var7 & ",total=" & var8 & " where Cédula=" & var3 & " "
mireg.ActiveConnection = cn
mireg.Execute 'guardar los variables que le declare en cada unos de los campos, los datos insertados en la barra de texto en la tabla de fulong de acuerdo con la cedula y abrir conexión e ejecutarla
Set mireg = Nothing 'si mi registro esta vacio
MsgBox "Registros Guardados" 'aparecera una ventana de ya almacenada los datos ingresados
Me.Text2.SetFocus 'pendiente con la barra de texto2
registrocedula.Show
Unload Me 'mostrarme el formulario registrocedula y salir de la actual
Else 'sino'
MsgBox "PROCESO CANCELADO", vbCritical, "DATOS DE ORIGEN SIN CAMBIOS" 'aparecera la anulacion del ejecutamiento
Exit Sub
End If
End Sub
Private Sub modificar_Click()
preg$ = MsgBox("¿Deseas modificar este registro?", vbYesNo, "Advertencia") 'ventana de pregunta si quiere hacerle cambios en el usuario
If preg$ = vbYes Then 'si es si entonces
Dim mireg As ADODB.Command
Set mireg = New ADODB.Command 'abrir el registro de base de datos
mireg.CommandType = adCmdText 'mi registro es de tipo texto en los campos
Set rg = New ADODB.Recordset 'abrir base de datos'
SQL = "select * from bd_fulong" 'seleccionar todo de la tabla de fulong
rg.Open SQL, cn, adOpenDynamic, adLockOptimistic 'abrir la conexion, ruta de forma dinamico y optico
var1 = Me.Text1.Text
var2 = Me.Text8.Text
var3 = Me.Text2.Text
var4 = Me.Text3.Text
var5 = Me.Text4.Text
var6 = Me.Text5.Enabled = False
var7 = Me.Text6.Enabled = False
var8 = Me.Text7.Enabled = False
mireg.CommandText = "update bd_fulong, ordenes_historico set Cédula=" & var3 & ",Nombre='" & var1 & "',Apellido='" & var2 & "',Dirección='" & var4 & "',Teléfono=" & var5 & ",plato='" & var6 & "',costo=" & var7 & ",total=" & var8 & " where Cédula=" & var3 & " "
mireg.ActiveConnection = cn
mireg.Execute 'guardar los variables que le declare en cada unos de los campos, los datos insertados en la barra de texto en la tabla de fulong de acuerdo con la cedula y abrir conexión e ejecutarla
Set mireg = Nothing 'si mi registro esta vacio
MsgBox "Registros Guardados" 'aparecera una ventana de ya almacenada los datos ingresados
Me.Text2.SetFocus 'pendiente con la barra de texto2
registrocedula.Show
Unload Me 'mostrarme el formulario registrocedula y salir de la actual
Else 'sino'
MsgBox "PROCESO CANCELADO", vbCritical, "DATOS DE ORIGEN SIN CAMBIOS" 'aparecera la anulacion del ejecutamiento
Exit Sub
End If
End Sub

Lo que observo es que estas intentado hacer un Update de edos tablas al mismo tiempo, y seguramente el campo Cedula esta en ambas tablas, debes especificar el nombre de la tabla punto y el nombre del campo para que esto no suceda.
En tu caso db_fulong. Cedula
En tu caso db_fulong. Cedula

Las tablas de bd_fulong y ordenes_historico están relacionada en la base de datos con la CEDULA, por eso no se que poner en los códigos ya que solo quiero que se modifique los campos de textbox 1,8,2,3,4 mientras que los otros textbox se quede como están.

No es eporque haces un update de esa manera, lo recomendable es hacer un update de una tabla, cada vez, si necesitas actualizar dos tablas, lo haces en dos sentencias diferentes

No se como hacer eso ya que tengo dos tablas unidas por la cedula, y si solo update una sola tabla, igualito ni me modifica saliendo un error de (no se hará ningún cambio o eliminar debido a la existencia de la tabla ordenes_historico) anteriormente si me modifica y me elimina con una update de solo una tabla pero ahora no...
¿Qué puedo hacer?
¿Qué puedo hacer?

Con el código ELIMINAR también:
Private Sub eliminar_Click()
Pregunta$ = MsgBox("¿Usted esta seguro que desea eliminar este registro?", vbYesNo, "Pregunta") 'ventana de pregunta de estar seguro de que desea eliminar este usuario
If preg$ = vbYes Then
var1 = Me.Text1.Text
var2 = Me.Text8.Text
var3 = Me.Text2.Text
var4 = Me.Text3.Text
var5 = Me.Text4.Text
var6 = Me.Text5.Text
var7 = Me.Text6.Text
var8 = Me.Text7.Text
Dim mireg As ADODB.Command
Set mireg = New ADODB.Command
mireg.CommandType = adCmdText
mireg.CommandText = "Delete * from bd_fulong, ordenes_historico where Cédula=" & var3 & ""
mireg.ActiveConnection = cn
mireg.Execute 'si la ventana de pregunta es si se abrirá la conexión con la base de datos de la cedula para eliminar todo de el campo de la tabla fulong de la cedula y ejecutarla ya
Set mireg = Nothing 'el registro esta vacio ya
MsgBox ("Registro eliminado de la Base de Datos"), vbInformation, "Informacion" 'aparecera una ventana de confimarcion de que fue exelente la eliminacion de los datos
Me.Text2.SetFocus 'pendiente con la barra de texto 2
registrocedula.Show
Unload Me 'abrir el formulario de registrocedula y cerrarse
Else 'sino'
MsgBox "PROCESO CANCELADO", vbCritical, "DATOS DE ORIGEN SIN CAMBIOS" ' la ejecucion fue anulada'
Me.Text2.SetFocus 'pendiente con la barra de texto 2'
Exit Sub
End If
End Sub
Private Sub eliminar_Click()
Pregunta$ = MsgBox("¿Usted esta seguro que desea eliminar este registro?", vbYesNo, "Pregunta") 'ventana de pregunta de estar seguro de que desea eliminar este usuario
If preg$ = vbYes Then
var1 = Me.Text1.Text
var2 = Me.Text8.Text
var3 = Me.Text2.Text
var4 = Me.Text3.Text
var5 = Me.Text4.Text
var6 = Me.Text5.Text
var7 = Me.Text6.Text
var8 = Me.Text7.Text
Dim mireg As ADODB.Command
Set mireg = New ADODB.Command
mireg.CommandType = adCmdText
mireg.CommandText = "Delete * from bd_fulong, ordenes_historico where Cédula=" & var3 & ""
mireg.ActiveConnection = cn
mireg.Execute 'si la ventana de pregunta es si se abrirá la conexión con la base de datos de la cedula para eliminar todo de el campo de la tabla fulong de la cedula y ejecutarla ya
Set mireg = Nothing 'el registro esta vacio ya
MsgBox ("Registro eliminado de la Base de Datos"), vbInformation, "Informacion" 'aparecera una ventana de confimarcion de que fue exelente la eliminacion de los datos
Me.Text2.SetFocus 'pendiente con la barra de texto 2
registrocedula.Show
Unload Me 'abrir el formulario de registrocedula y cerrarse
Else 'sino'
MsgBox "PROCESO CANCELADO", vbCritical, "DATOS DE ORIGEN SIN CAMBIOS" ' la ejecucion fue anulada'
Me.Text2.SetFocus 'pendiente con la barra de texto 2'
Exit Sub
End If
End Sub

Busca en google o por bing un tutor de T- SQL o Transact-SQL para que aprendas comos se deben hacer estas sentencias
por lo pronto seria : Update TuTabla SET campo1=valor1, campo2 = 'algo' WHERE código = 2
Donde código es el nombre del campo que es llave primaria de la tabla o los campos que no se repiten en la tabla
por lo pronto seria : Update TuTabla SET campo1=valor1, campo2 = 'algo' WHERE código = 2
Donde código es el nombre del campo que es llave primaria de la tabla o los campos que no se repiten en la tabla

http://www.devjoker.com/gru/Tutorial-Transact-SQL/TSQL/Tutorial-Transact-SQL.aspx
http://www.devjoker.com/contenidos/Tutorial-de-Transact-SQL/228/Introducci%C3%B3n-a-Transact-SQL.aspx
http://www.abcdatos.com/tutoriales/tutorial/z7424.html
http://msdn.microsoft.com/en-us/library/ms365303.aspx
http://www.conocimientosweb.net/dcmt/ficha9778.html
http://www.devjoker.com/contenidos/Tutorial-de-Transact-SQL/228/Introducci%C3%B3n-a-Transact-SQL.aspx
http://www.abcdatos.com/tutoriales/tutorial/z7424.html
http://msdn.microsoft.com/en-us/library/ms365303.aspx
http://www.conocimientosweb.net/dcmt/ficha9778.html

¿Ya vi las rutas del web pero no entiendo muy bien los ejemplos que aparece ahí? ¿Mi proyecto es de dos tablas relacionadas en la base de datos pero no se puede poner el la ruta SQL dos tablas?
- Compartir respuesta
- Anónimo
ahora mismo
