SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Visual Basic para principiantes => Mensaje iniciado por: kapricorniana en Martes 28 de Marzo de 2006, 18:15
-
que dificil se me hace esto pero ahi terca yo en aprender......pues ahi va mi problem......: usando ado utilice varias tablas para hacer mi consulta en un data grid y ahora desea agregar, modificar y eliminar (pero solo eliminar aparentemente por medio de una llave q se llamara estado donde 0 sera estado activo y 1 estado eliminado) ....hasta ahora voy avanzando esto pero ya me tranque y todo me sale a medias :( ojala alguien pueda ayudarme a terminar esto y principalmente a entenderlo..gracias de antemano
Dim RstPec As New ADODB.Recordset
Dim Temp As New ADODB.Recordset
Dim sql As String
Dim RstNuevo As New ADODB.Recordset
Option Explicit
Private Sub CmdEAnular_Click()
End Sub
Private Sub Command1_Click()
Dim pru As Integer
If RstPec.RecordCount = 1 Then
RstPec.MoveFirst
Do While Not RstPec.EOF
RstPec.Delete
RstPec.MoveNext
Loop
Me.TxtCodProducto.SetFocus
Me.TxtSubTotal.Text = ""
Me.TxtTotal.Text = ""
Exit Sub
End If
If RstPec.RecordCount > 0 Then
If RstPec.BOF Or RstPec.EOF Then
MsgBox "Selecccionar un Registro para Eliminar"
Else
pru = RstPec!NUMERO
RstPec.Delete adAffectCurrent
End If
End If
End Sub
Private Sub Command2_Click()
Picture2.Visible = True
TxtAreaOrigen.Enabled = False
TxtArea.Enabled = True
TxtSubArea.Enabled = True
TxtUarea.Enabled = True
TxtCodAreaDestino.Enabled = False
TxtAreaDestino.Enabled = True
TxtSubareaDestino.Enabled = True
TxtUareaDestino.Enabled = True
TxtCodProducto.Enabled = True
TxtPartida.Enabled = True
TxtDescripcion.Enabled = True
TxtUnidad.Enabled = True
TxtCantidad.Enabled = True
TxtPrecio.Enabled = True
TxtSubTotal.Enabled = True
TxtStock.Enabled = True
TxtTotal.Enabled = True
If Command2.Caption = "&Grabar" Then
Command2.Caption = "&Modificar"
Call Modo("M")
Call Activa(False)
MsgBox "SE MODIFICO CON EXITO ..!", vbExclamation
Command1.Enabled = True
ElseIf Command2.Caption = "&Modificar" Then
Command2.Caption = "&Grabar"
Activa (True)
Command1.Enabled = False
End If
Refrescar
Debug.Print sql
DbPrin.Execute sql
RstPec.Requery
Else
If Command2.Caption = "&Modificar" Then
Command2.Caption = "&Grabar"
Activa (True)
End If
Refrescar
End If
End Sub
Public Sub Modo(Gm As String)
DbPrin.Execute "Execute MANTEPECOSABIEN '" & Gm & "','" & TxtArea & "','" & TxtAreaOrigen & "','" & TxtArea & "','" & TxtUarea & "'"
End Sub
Public Sub Refrescar()
Command1.Refresh
Command2.Refresh
Command3.Refresh
End Sub
Public Sub Activa(TF As Boolean)
TxtArea.Enabled = TF
TxtSubArea.Enabled = TF
TxtUarea.Enabled = TF
TxtAreaDestino.Enabled = TF
TxtSubareaDestino.Enabled = TF
TxtUareaDestino.Enabled = TF
TxtCodProducto.Enabled = TF
TxtPartida.Enabled = TF
TxtDescripcion.Enabled = TF
TxtUnidad.Enabled = TF
TxtCantidad.Enabled = TF
TxtPrecio.Enabled = TF
TxtSubTotal.Enabled = TF
TxtStock.Enabled = TF
TxtTotal.Enabled = TF
End Sub
Private Sub Command3_Click()
Unload Me
End
End Sub
Private Sub DgEdicion_Click()
If RstPec.RecordCount > 0 Then
TxtAreaOrigen = RstPec(1)
TxtArea = RstPec(2)
TxtSubArea = RstPec(3)
TxtUarea = RstPec(4)
TxtCodAreaDestino = RstPec(5)
TxtAreaDestino = RstPec(6)
TxtSubareaDestino = RstPec(7)
TxtUareaDestino = RstPec(8)
TxtCodProducto = RstPec(9)
TxtPartida = RstPec(10)
TxtDescripcion = RstPec(11)
TxtUnidad = RstPec(12)
TxtCantidad = RstPec(13)
TxtPrecio = RstPec(14)
TxtSubTotal = RstPec(15)
TxtStock = RstPec(16)
TxtTotal = RstPec(15)
End If
End Sub
Private Sub Form_Load()
Dim sql As String
FrmPassword.Mascar.ApplySkin Me.hwnd
Me.Top = 50
Me.Left = 1150
Picture1.BackColor = RGB(210, 218, 227)
Picture2.BackColor = RGB(210, 218, 227)
Label1.BackColor = RGB(210, 218, 227)
Label2.BackColor = RGB(210, 218, 227)
Label3.BackColor = RGB(210, 218, 227)
Label4.BackColor = RGB(210, 218, 227)
Label5.BackColor = RGB(210, 218, 227)
Label6.BackColor = RGB(210, 218, 227)
Dim RstNuevo As New ADODB.Recordset
Me.TxtUsuario = UserActive
Me.TxtFechMod = Date
sql = "SELECT right(('000'+convert(nvarchar,CODTAB)),2)+' '+DESCRIPCION as opcion FROM MODALIDAD"
AsignaRst RstNuevo, sql, DbPrin
CmbModalidad.AddItem "Seleccionar Opcion"
Do While Not RstNuevo.EOF
CmbModalidad.AddItem RstNuevo!opcion
RstNuevo.MoveNext
Loop
CmbModalidad.ListIndex = 0
sql = "SELECT DOCUMENTO.NUMERO, dbo.CAB_SALIDA.CODAREAO, AREAS_1.AREA AS AREA_ORIGEN, AREAS_1.SUBAREA AS SUB_AREA_ORIGEN, " & _
"AREAS_1.U_AREA AS U_AREA_ORIGEN, dbo.CAB_SALIDA.CODAREAD, dbo.AREAS.AREA AS AREA_D, dbo.AREAS.SUBAREA AS SUBAREA_D, " & _
"dbo.AREAS.U_AREA AS U_AREA_D, dbo.DET_SALIDA.COD AS CODBIEN, dbo.BIEN.PARTIDA, dbo.BIEN.DESCRIPCION, dbo.BIEN.UNIDAD, " & _
"dbo.DET_SALIDA.CANTIDAD, dbo.DET_SALIDA.PRECIO, dbo.DET_SALIDA.CANTIDAD * dbo.DET_SALIDA.PRECIO AS SUBTOTAL, " & _
"dbo.DET_SALIDA.STOCK_ALDIA AS STOCK, dbo.CAB_SALIDA.FECHMOD, dbo.CAB_SALIDA.USERMOD, dbo.CAB_SALIDA.FECHA, " & _
"dbo.MODALIDAD.DESCRIPCION AS MODALIDAD " & _
"FROM CAB_SALIDA INNER JOIN " & _
"dbo.DET_SALIDA ON dbo.CAB_SALIDA.IDSALIDA = dbo.DET_SALIDA.IDSALIDA INNER JOIN " & _
"dbo.DOCUMENTO ON dbo.CAB_SALIDA.IDSALIDA = dbo.DOCUMENTO.IDSALIDA INNER JOIN " & _
"dbo.AREAS ON dbo.CAB_SALIDA.CODAREAD = dbo.AREAS.CODAREA INNER JOIN " & _
"dbo.AREAS AREAS_1 ON dbo.CAB_SALIDA.CODAREAO = AREAS_1.CODAREA INNER JOIN " & _
"dbo.BIEN ON dbo.DET_SALIDA.COD = dbo.BIEN.COD INNER JOIN " & _
"dbo.MODALIDAD ON dbo.CAB_SALIDA.MODALIDAD = dbo.MODALIDAD.CodTab WHERE(dbo.CAB_SALIDA.ESTADO = '0')AND (dbo.DOCUMENTO.ANO_TRAB = '2006') ORDER BY dbo.DOCUMENTO.NUMERO "
Debug.Print sql
AsignaRst RstPec, sql, DbPrin
If RstPec.RecordCount > 0 Then
Set Me.DgEdicion.DataSource = RstPec
Else
MsgBox "No existe ninguna Pecosa!!"
End If
End Sub
Private Sub TxtEBusca_Change()
sql = "SELECT DOCUMENTO.NUMERO, dbo.CAB_SALIDA.CODAREAO, AREAS_1.AREA AS AREA_ORIGEN, AREAS_1.SUBAREA AS SUB_AREA_ORIGEN, " & _
"AREAS_1.U_AREA AS U_AREA_ORIGEN, dbo.CAB_SALIDA.CODAREAD, dbo.AREAS.AREA AS AREA_D, dbo.AREAS.SUBAREA AS SUBAREA_D, " & _
"dbo.AREAS.U_AREA AS U_AREA_D, dbo.DET_SALIDA.COD AS CODBIEN, dbo.BIEN.PARTIDA, dbo.BIEN.DESCRIPCION, dbo.BIEN.UNIDAD, " & _
"dbo.DET_SALIDA.CANTIDAD, dbo.DET_SALIDA.PRECIO, dbo.DET_SALIDA.CANTIDAD * dbo.DET_SALIDA.PRECIO AS SUBTOTAL, " & _
"dbo.DET_SALIDA.STOCK_ALDIA AS STOCK, dbo.CAB_SALIDA.FECHMOD, dbo.CAB_SALIDA.USERMOD, dbo.CAB_SALIDA.FECHA, " & _
"dbo.MODALIDAD.DESCRIPCION AS MODALIDAD " & _
"FROM CAB_SALIDA INNER JOIN " & _
"dbo.DET_SALIDA ON dbo.CAB_SALIDA.IDSALIDA = dbo.DET_SALIDA.IDSALIDA INNER JOIN " & _
"dbo.DOCUMENTO ON dbo.CAB_SALIDA.IDSALIDA = dbo.DOCUMENTO.IDSALIDA INNER JOIN " & _
"dbo.AREAS ON dbo.CAB_SALIDA.CODAREAD = dbo.AREAS.CODAREA INNER JOIN " & _
"dbo.AREAS AREAS_1 ON dbo.CAB_SALIDA.CODAREAO = AREAS_1.CODAREA INNER JOIN " & _
"dbo.BIEN ON dbo.DET_SALIDA.COD = dbo.BIEN.COD INNER JOIN " & _
"dbo.MODALIDAD ON dbo.CAB_SALIDA.MODALIDAD = dbo.MODALIDAD.CodTab where Numero = '" & TxtEBusca.Text & "'"
AsignaRst RstPec, sql, DbPrin
If RstPec.RecordCount > 0 Then Set Me.DgEdicion.DataSource = RstPec
End Sub
..........
PD.: A veces creo q estoy mal desde las vistas de mi base de datos pero al menos quisiera una idea de como seguir...gracias
capricorniana1977@hotmail.com-----> Karmen :comp:
-
:blink: creo q ta muy komplicado q nadie me ayuda [/size]
-
hola holaaa hay alguien por ahi q se compadezca y me ayude please o al menos q me pase algunos ejemplos con grids q contengan varias datos de varias tablas para darme una idea.......porq este mismo problema porfissss :(
-
Te recomiendo que coloques tu pregunta en el foro que no es para principiantes:
http://foros.solocodigo.com/index.php?showforum=39 (http://foros.solocodigo.com/index.php?showforum=39)
:comp:
-
<span style='font-family:Courier'>ya lo puse hoy tempranito pero todos lo ven y naide me ayuda :( :scream: <_< </span>
-
En el foro que te dije no está tu pregunta, verifica el foro.
:comp:
-
Hola Kapricorniana.
No especificas bien si ya puedes agregar y modificar...
Pero creo que la idea sería que en tu consulta para llenar el datagrid te trajeras los campos claves de las tablas que usas, luego, con estas claves, puedes realizar las operaciones de agregar y modificar trabajando directamente sobre cada tabla involucrada.
Para eliminar tus tablas (aquí no estoy seguro si deberían ser todas o sólo una) deberían tener un campo llave (que tu llamas estado). En todo caso la eliminación realmente funcionaría como una modificación a éste campo(s) en tu(s) tabla(s).
Al menos eso es lo que se me ocurre... Si puedes colocar las estructuras de tus tablas e indicar las relaciones tal vez alguien con más experiencia en bases de datos pueda ayudarte mejor.
Espero que te sea de utilidad mi comentario.
Saludos.
DiabloRojo
-
:unsure: lo q pasa es q recien estoy aprendiendo y no enteindo lo q me quieres decir...estoy q aprendo solo viendo y con ejemplos porq sql es nuevo para mi y lo q intento eliminar logicamente es una fila del datagrid y el problema es q mi datagrid contiene varias tablas y por eso me sale error cada vez q intento eliminar con delete asi q opte mejor eliminar logicamente pero la idea la tengo pero no se como seria la sintaxis porq la q intento me sale error de sintaxis
sql="update cab_salida set estado=1 where idsalida"
-
:comp: este es el diagrama de la bd y el formulario q toy haciendo... por eso puse mi problema aqui porq en avanzados se q las explicaciones q me den seran generales y no las entendere y necesito urgente q me ayude alguien a terminar con esto porq recien el prox mes podre pagar el curso para poder aprender bien bien esto de sql ....y todo me sale a medias modificar a medias y agregar aun no he intentado :(
capricorniana1977@hotmail.com
pd...no puedo enviar jpg ni doc...como envio?me rebota cuando intento
-
ahh muchisimas gracias diablo rojo por haberte tomado el tiempo de contestarme
...solo busco algunos ejemplos o aunq sea uno para guiarme de datagrids q contengan varias tablas y como eliminar filas de estos datagrids, agregar y modificar seria chevere pero hasta ahora no doy con nada parecido
Karmen
-
Hola kapricorniana.
Pásame la estructura de tus tablas y la consulta sql que usas para llenar el datagrid al correo fieldsoflight@gmail.com. A ver que podemos hacer...
Saludos
DiabloRojo
-
Qué tal Kapricorniana?
Te mandé un pequeño ejemplo al mail capricorniana1977@... está hecho rápido y tiene sus defectos pero al menos muestra que lo que te propones hacer es válido. Recibí tu mail pero lamento decirte que no pude acceder a la base de datos. El ejemplo está en Access.
Espero que te sea de utilidad. Si te sirve dime para postearlo al foro.
DiabloRojo.
Se me olvidaba... uso la referencia al ADO 2.5
-
:( no ha llegado nada a mi correo diablito y ahora?
-
Hola Kapricorniana.
Te mandé nuevamente el ejemplo.
Saludos
DiabloRojo.
-
:huh: pues nada diablito....no me llega ningun archivo a capricorniana1977@hotmail.com
k@rmen[/b][/i]
-
La verdad no sé qué pasa... lo mando por aquí a ver...
Este era el cuerpo del mensaje que te enviaba:
Hola Kapricorniana.
Revisé el correo el lunes y recibí tu mail. Lamentablemente la base de datos que me pasas parece ser de sqlserver2000 el cual no poseo. De todas formas traté de hacer un ejemplo utilizando access. Usé tu idea de hacer una especie de "borrado lógico". Comentarios sobre el ejemplo:
-No hago validaciones así que ten cuidado con lo que ingresas.
-Agrego datos utilizando recordsets. Esta no es la forma más adecuada de agregar datos (no me quise complicar con instrucciones sql).
-No logro que al momento de agregar pedidos se actualice el datagrid1 del formulario frmPedidos :-S por lo tanto debes cerrar y volver a abrir el formulario.
-El código no es consistente. De un formulario a otro hago lo mismo de maneras distintas ;-)
-La mayor parte del código no está comentado.
Bueno, aparte de los comentarios anteriores espero que te sea de utilidad.
Saludos.
DiabloRojo
Te recuerdo y a los amigos que bajen el ejemplo que lo hice al vuelo y muchas cosas no están hechas de la mejor manera...
DiabloRojo.
-
:rolleyes: gracias diablito....no es lo que quiero pero gracias de todas maneras y ya me inscribi en un curso full visual basic y sql .........con todo con la programacion :)
-
Hola kapricorniana.
Lamento que no te haya sido útil. Sólo me queda decirte que plantees o replantees la pregunta de otra forma para saber exactamente qué es lo que estás buscando.
Saludos.
DiabloRojo.