Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Duda con Datagrid en visual 6.0

Estas en el tema de Duda con Datagrid en visual 6.0 en el foro de Visual Basic clásico en Foros del Web. Buenas, tengo el siguiente problema. Tengo 2 datagrid en un mismo form, en uno de ellos tengo Materiales y en el otro debo ir agregando ...
  #1 (permalink)  
Antiguo 23/03/2011, 07:56
 
Fecha de Ingreso: marzo-2011
Mensajes: 75
Antigüedad: 13 años, 9 meses
Puntos: 6
Pregunta Duda con Datagrid en visual 6.0

Buenas, tengo el siguiente problema.
Tengo 2 datagrid en un mismo form, en uno de ellos tengo Materiales y en el otro debo ir agregando esos materiales para luego armar un componente, a su vez el stock de esos materiales debe ir dismuniyendo. Esto debo guardarlo en una base de datos Acces
Alguien puede explicarme como hago para pasar los datos de un Datagid a otro?
Gracias!
  #2 (permalink)  
Antiguo 23/03/2011, 10:03
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 2 meses
Puntos: 47
Respuesta: Duda con Datagrid en visual 6.0

Hola!
Creo que si usas dos tablas en access asignadas a dos datagrid no vas a tener problemas. En tus botones de accion (agregar o actualizar) simplemente refrescas los dos datagrid luego de añadir tu registro a la base de datos, osea:
1-Click en el boton (agregar o actualizar o el que uses para la accion):
a-inserta en la tabla "agregados" en access el registro seleccionado
b-elimina de la tabla "materiales" el registro seleccionado
2-Refrescas el recordset que carga los datagrid

Postea tu codigo para darte sugerencias...
  #3 (permalink)  
Antiguo 23/03/2011, 11:14
 
Fecha de Ingreso: marzo-2011
Mensajes: 75
Antigüedad: 13 años, 9 meses
Puntos: 6
Respuesta: Duda con Datagrid en visual 6.0

Private Sub Form_Load()
abrirConexion

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "select Nombre,Medidas from Materiales", cnn, adOpenStatic, adLockOptimistic

With DataGrid1
.AllowUpdate = False
End With

Call CargarDataGrid(DataGrid1)
End Sub

Este es el codigo que utilizo para cargar el datagrid1 que es donde estan los Materiales. Podrias darme un ejemplo con lo que me decis? No me doy cuenta a simple vista. Gracias
  #4 (permalink)  
Antiguo 23/03/2011, 11:57
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 2 meses
Puntos: 47
Respuesta: Duda con Datagrid en visual 6.0

Usas solo una tabla (Materiales)?
Crea un nuevo campo en la tabla "Materiales" que se llame "mDisponible" que podrá tener uno de dos valores: "S" (si disponible) y "N" (no disponible), entonces:
Código vb:
Ver original
  1. Private Sub Form_Load()
  2. abrirConexion
  3.  
  4. Set rs = New ADODB.Recordset
  5. Set rs2 = New ADODB.Recordset
  6.  
  7. rs.CursorLocation = adUseClient
  8. rs.Open "select Nombre,Medidas from Materiales WHERE mDisponible='S' ", cnn, adOpenStatic, adLockOptimistic
  9.  
  10. rs2.CursorLocation = adUseClient
  11. rs2.Open "select Nombre,Medidas from Materiales WHERE mDisponible='N' ", cnn, adOpenStatic, adLockOptimistic
  12.  
  13. DataGrid1.AllowUpdate = False
  14. DataGrid2.AllowUpdate = False
  15.  
  16. Call CargarDataGrid(DataGrid1)
  17. Call CargarDataGrid(DataGrid2)
  18.  
  19. End Sub

Ahi te cargará el Datagrid1 (este te mostrará los materiales disponibles) y el Datagrid2 (este solo te mostrará los materiales ya agregados), entonces en el boton que agregas los componentes:

Código vb:
Ver original
  1. 'Imagino que tienes un ID del material...
  2. CNN.Execute "UPDATE Materiales set mDisponible='N' where ID_MATERIAL=" & ID_MATERIAL & " and mDisponible='S'"
  3.  
  4. Call CargarDataGrid(DataGrid1)
  5. Call CargarDataGrid(DataGrid2)

Intenta a ver...
  #5 (permalink)  
Antiguo 23/03/2011, 12:26
 
Fecha de Ingreso: marzo-2011
Mensajes: 75
Antigüedad: 13 años, 9 meses
Puntos: 6
Respuesta: Duda con Datagrid en visual 6.0

Hola, Probe lo que me dijiste y anda, Las tablas que uso son Materiales y otra que se llama Bins. La tabla bins tiene Materiales que son los que la componen. Mi idea es ir seleccionando la cantidad de cierto material que se necesita para armar ese "Bin" (Bin es un tipo de cajon) y que a su vez el stock de ese material vaya disminuyendo.
Gracias!!
  #6 (permalink)  
Antiguo 23/03/2011, 15:08
 
Fecha de Ingreso: marzo-2011
Mensajes: 75
Antigüedad: 13 años, 9 meses
Puntos: 6
Respuesta: Duda con Datagrid en visual 6.0

Pude solucionar. Muestro el codigo de como lo hice por si a alguien le sirve.

Private Sub Command1_Click()
If Me.Text1.Text = "" Then
MsgBox ("Debe ingresar la cantidad")
Else
If rs(3).Value <= 0 Then
MsgBox ("No hay mas stock de este material")
Else
rs(3) = Val(rs(3) - Val(Text1.Text))
rs.Update

Set rs2 = New ADODB.Recordset
rs2.CursorLocation = adUseClient
rs2.Open "INSERT INTO Materiales_Temp (Id,Nombre,Medidas,Cantidad) values( " + rs(0) + " ," + rs(1) + "," + rs(2) + "," + rs(3) + ")", cnn, adOpenStatic, adLockOptimistic

With DataGrid2
.AllowUpdate = False
End With

Call CargarDataGrid(DataGrid2)
End If
End If
End Sub

Solo un detalle. Cuando hago el insert en el rs2 me da un error diciendo que los tipos no coinciden. Sabes que puede ser eso?
  #7 (permalink)  
Antiguo 24/03/2011, 09:43
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 2 meses
Puntos: 47
Respuesta: Duda con Datagrid en visual 6.0

Debe ser el tipo de variables que le pasas al SQL:

• Verifica que los campos de numero reciban variables numericas (ej.: campo CANTIDAD=123456)
• Verifica que los campos de texto reciban variables string (ej.: campo NOMBRE='MI NOMBRE')
• Verifica los valores de:
-----rs(0)
-----rs(1)
-----rs(2)
-----rs(3)

• Cambia el "adOpenStatic" por "adOpenKeyset"

Última edición por lokoman; 24/03/2011 a las 10:06

Etiquetas: datagrid, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:28.