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

Problemas al actualizar y validar datos?

Estas en el tema de Problemas al actualizar y validar datos? en el foro de Visual Basic clásico en Foros del Web. Estimados compañeros tengo un problema, es el siguiente: Mi aplicacion crea un numero de registros, equivalente al numero de dias de un mes determinado y ...
  #1 (permalink)  
Antiguo 09/02/2010, 11:43
 
Fecha de Ingreso: noviembre-2009
Mensajes: 40
Antigüedad: 14 años, 5 meses
Puntos: 0
Problemas al actualizar y validar datos?

Estimados compañeros tengo un problema, es el siguiente: Mi aplicacion crea un numero de registros, equivalente al numero de dias de un mes determinado y de un ambiente determinado. Sin embargo al tratar de jalar esos datos creados en una tabla de access y tratar de modificarlos a traves de un objeto datagrid a traves de una conexion adob, me trae problemas con el tipo de datos,el objeto dao para ser creado debe ser de tipo cadena y mis datos de la tabla de access tienen valores nullo y al mandarlos al objeto datagrid me da errores diciendo que no se puede actualizar valores nullos por otros nullos.
El codigo es el siguiente:
Sub MostrarRegistros(FechaMuestreo As Date, IdAmbiente As Integer)
'************************************************* ************************
'Nombre: MostrarRegistros
'Fecha Creacion: 08/02/2010
'Parametros:
'FechaMuestreo: Fecha en la que se realiza el muestreo
'IdAmbiente: Codigo del ambiente
'Objetivo: Mostrar un numero de registros de un determinado mes
'y ambiente en una tabla adob
'************************************************* ************************
Dim mes, Gestion As Integer
'Creamos los objetos para enlazar a la base de datos
Dim cn As New ADODB.Connection 'Creamos el objeto Connection para enlazar a la base
Dim rs As New ADODB.Recordset 'Creamos el objeto Recordset para enlazar a la tabla
'Creamos el objeto para enviar los registros en una tabla
'de tipo ADOB
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
'Creando los encabezados de la tabla adob
rst.Fields.Append "Fecha", adDate, 25
rst.Fields.Append "Hora", adVarChar, 8, adFldIsNullable
'rst.Fields.Append "Temperatura", adVarChar, 10, adFldIsNullable
rst.Fields.Append "Temperatura", adDouble
rst.Fields.Append "Ph", adDouble
rst.Fields.Append "Turbidez (Ntu)", adDouble, adFldIsNullable
rst.Fields.Append "Cloro Libre", adDouble, adFldIsNullable
rst.Fields.Append "Alc.Fenoftaleina(mg/l)", adDouble, adFldIsNullable
rst.Fields.Append "Alcalinidad Total(mg/l)", adDouble, adFldIsNullable
rst.Fields.Append "Calcio(mg/l)", adDouble, adFldIsNullable
rst.Fields.Append "Magnesio(mg/l)", adDouble, adFldIsNullable
'Inicio Metales pesados
rst.Fields.Append "Hierro(mg/l)", adDouble, adFldIsNullable
rst.Fields.Append "Manganeso(mg/l)", adDouble, adFldIsNullable
'Fin Metales pesados
rst.Fields.Append "Cloruros(mg/l)", adDouble, adFldIsNullable
rst.Fields.Append "Ph Saturación", adDouble, adFldIsNullable
rst.Fields.Append "Índice de Langelier", adDouble, adFldIsNullable
rst.Fields.Append "Conductividad(ms/cm)", adDouble, adFldIsNullable
rst.Fields.Append "Color(mPt-Co)", adDouble, adFldIsNullable
'Inicio Metales pesados
rst.Fields.Append "Aluminio(mg/l)", adDouble, adFldIsNullable
'Fin Metales Pesados
rst.Fields.Append "Sulfatos(mg/l)", adDouble, adFldIsNullable
rst.Fields.Append "Nitratos(mg/l)", adDouble, adFldIsNullable
rst.Fields.Append "Nitritos(mg/l)", adDouble, adFldIsNullable
rst.Fields.Append "Olor", adVarChar, 1, adFldIsNullable
rst.Fields.Append "Sabor", adVarChar, 1, adFldIsNullable
rst.Fields.Append "Fluoruros(mg/l)", adDouble, adFldIsNullable
rst.Fields.Append "Vol.de Alc. Fenoftaleina", adDouble, adFldIsNullable
rst.Fields.Append "Vol.de Alcalinidad Total", adDouble, adFldIsNullable
rst.Fields.Append "Concentración H2SO4(M)(Alcalinidad)", adDouble, adFldIsNullable
rst.Fields.Append "Vol. de EDTA(Calcio)", adDouble, adFldIsNullable
rst.Fields.Append "Vol. de EDTA(Dureza)", adDouble, adFldIsNullable
rst.Fields.Append "Volumen muestra(ml)(Dureza)", adDouble, adFldIsNullable
rst.Fields.Append "Concentracion EDTA(M)(Dureza)", adDouble, adFldIsNullable
rst.Fields.Append "Vol. de AgNO3(Cloruros)", adDouble, adFldIsNullable
rst.Fields.Append "Volumen muestra(ml)(Cloruros)", adDouble, adFldIsNullable
rst.Fields.Append "Concentración AgNO3(N)(Cloruros)", adDouble, adFldIsNullable
'abriendo la tabla del datagrid adob
rst.Open , , adOpenStatic, adLockBatchOptimistic
'Obteniendo el año y el mes de la fecha de muestreo
mes = Month(FechaMuestreo)
Gestion = Year(FechaMuestreo)
'Abrimos la base de datos "bd_plantas.mdb"
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=e:\registro_plantas\bd_plantas.mdb"
rs.Source = "ta_ana_fis_qui" 'Especificamos la fuente de datos. En este caso la tabla "ta_ana_fis_qui".
rs.CursorType = adOpenKeyset 'Definimos el tipo de cursor.
rs.LockType = adLockOptimistic 'Definimos el tipo de bloqueo.
'Abrimos el Recordset y lo llenamos con una consulta SQL.
rs.Open "select * from ta_ana_fis_qui where ano = " & Gestion & "And periodo = " & mes & "And Id_Ambiente= " & IdAmbiente, cn
rs.MoveFirst 'Nos posicionamos en el primer registro del Recordset.
Do Until rs.EOF 'Repite hasta que se lea todo el Recordset.
'Adicionamos elementos a la tabla
' rst.AddNew Array("Fecha", "Hora", "Temperatura", "Ph"), _
'Array(rs.Fields("F_FECHA_MUESTREO"), rs.Fields("F_HORA_MUESTREO"), _
'rs.Fields("B_TEMPERATURA"), rs.Fields("B_PH"))
rst.AddNew Array("Fecha", "Hora", "Temperatura"), Array(rs.Fields("F_FECHA_MUESTREO"), rs.Fields("F_HORA_MUESTREO"), rs.Fields("B_TEMPERATURA"))
'List1.AddItem rs.Fields("FECHA_REGISTRO") & " " & rs.Fields("ano") & " " & rs.Fields("periodo") & " " _
'& rs.Fields("hora_registro") & " " & rs.Fields("id_analisis")
rs.MoveNext 'Nos movemos al siguiente registro.
Loop
'Almacenamos todos los datos en el datagrid adob
Set DataGrid_Muestras.DataSource = rst
rs.Close
'rst.Close
End Sub

De antemano gracias.
Saludos
  #2 (permalink)  
Antiguo 09/02/2010, 17:41
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años
Puntos: 7
Respuesta: Problemas al actualizar y validar datos?

Un ejemplo parecido a lo que entiendo quieres hacer:

Variables globales para el manejo de datos:

Código vb:
Ver original
  1. Dim cn As ADODB.Connection
  2. Dim res As ADODB.Recordset
  3. Dim conexion As String


en el load del formulario colocas esto, (en este caso yo lo hice con una BD en access 2007, pero solo cambia la cadena de conexión para version de access que tú estes utlizando):

Código vb:
Ver original
  1. Private Sub Form_Load()
  2.     Set cn = New ADODB.Connection
  3.     conexion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Data.accdb;Persist Security Info=False"
  4.                            
  5.     cn.ConnectionString = conexion
  6.     cn.Open
  7.    
  8.     Set res = New ADODB.Recordset
  9.     With res
  10.         .ActiveConnection = cn
  11.         .CursorLocation = adUseClient
  12.         .CursorType = adOpenStatic
  13.         .LockType = adLockOptimistic
  14.     End With
  15.     actualizargrid
  16. End Sub

Primero que nada creas registros en blanco de acuerdo al número de días del mes eso lo puedes hacer con esto colocado en un botón, aqui por ejemplo le indico que me cree 10 registros en blanco con su respectivo código:

Código vb:
Ver original
  1. Private Sub Command1_Click()
  2.     res.Close
  3.    
  4.     res.Open "SELECT MAX(codigo) FROM Alumnos" 'Se obtiene el numero mayor de la columna código para poder generar el siguiente
  5.    Dim codigo As Variant
  6.    
  7.     codigo = res.Fields(0)
  8.     If IsNull(codigo) Then 'se pregunta si el resultado ha sido null, lo que quiere decir que la tabla está en blanco
  9.        codigo = 0
  10.     End If
  11.     res.Close
  12.    
  13.     For contador = 1 To 10
  14.         codigo = codigo + 1
  15.         With res
  16.             .Open "INSERT INTO Alumnos VALUES(" & codigo & ",'','','','')"
  17.         End With
  18.     Next
  19.     actualizargrid
  20. End Sub

Y para actulizar el datagrid:

Código vb:
Ver original
  1. Sub actualizargrid()
  2.     res.Open "SELECT * FROM Tabla"
  3.     Set DataGrid1.DataSource = res
  4. End Sub

La propiedad AllowUpdate del data grid debe es en true, y con eso todo cambio que hagas en la grilla se guardará en la base de datos.
__________________
En programación hay mil y un formas de hacer lo mismo...
  #3 (permalink)  
Antiguo 05/10/2010, 11:10
 
Fecha de Ingreso: octubre-2010
Mensajes: 1
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problemas al actualizar y validar datos?

Hola!

Estoy intentado manipular la base datos de access 2007, cuya extensión es accdb. Esta revisando el programa pero este funciona siemrpe y cuando sea mdb. Pro favor me podrias ayudar con un ejemplo para manipular unabase de datos accdb.

Gracias!

Etiquetas: Ninguno
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




La zona horaria es GMT -6. Ahora son las 09:29.