No coinciden los tipos vb6 y acces2007

Tengo 3 datagrid, enlasados a una bd de access con adodc, mi problema es que del datagrid 1 paso algún registro al 3 y si encuentra algún campo vacion me envía un error de ""no coinciden los tipos"", he buscado la solución de diferentes formas, he utilizado el isnull, isempty, y ninguno me ha funcionado, en la bd los campos pueden ser vacíos
Private Sub DataGrid1_DblClick()
TCol1 = DataGrid1.Columns("Categoria").Value
TCol2 = DataGrid1.Columns("Tipo").Value
TCol3 = DataGrid1.Columns("Especialidad").Value
TCol4 = DataGrid1.Columns("Nombre").Value
TCol5 = DataGrid1.Columns("Descripcion").Value
TCol6 = DataGrid1.Columns("Cantidad_req").Value
TCol7 = DataGrid1.Columns("unidad").Value
TCol8 = DataGrid1.Columns("Cantidad_Disp").Value
TCol9 = DataGrid1.Columns("Dimension").Value
TCol10 = DataGrid1.Columns("Medida").Value
TCol11 = DataGrid1.Columns("Marca").Value
TCol12 = DataGrid1.Columns("Modelo").Value
TCol13 = DataGrid1.Columns("No_art").Value
TCol14 = DataGrid1.Columns("Capacidad").Value
TCol15 = DataGrid1.Columns("Condiciones").Value
TCol16 = DataGrid1.Columns("Estado").Value
TCol17 = DataGrid1.Columns("Prioridad").Value
TCol18 = DataGrid1.Columns("Costo").Value
TCol19 = DataGrid1.Columns("Nom_Pro").Value
TCol20 = DataGrid1.Columns("Encargado").Value
TCol21 = DataGrid1.Columns("Tel_pro").Value
TCol22 = DataGrid1.Columns("Cel_pro").Value
TCol23 = DataGrid1.Columns("Correo_pro").Value
TCol24 = DataGrid1.Columns("Calle_pro").Value
TCol25 = DataGrid1.Columns("No_pro").Value
TCol26 = DataGrid1.Columns("Colonia_pro").Value
TCol27 = DataGrid1.Columns("Del_pro").Value
TCol28 = DataGrid1.Columns("resp_Tor").Value
TCol29 = DataGrid1.Columns("CodNeo").Value
TCol30 = DataGrid1.Columns("No_req").Value
TCol31 = DataGrid1.Columns("Lugar_trabajo").Value
With FalseR ' Simplemente llenamos la tabla.
.AddNew
.Fields(0).Value = TCol1
.Fields(1).Value = TCol2
.Fields(2).Value = TCol3
.Fields(3).Value = TCol4
.Fields(4).Value = TCol5
.Fields(5).Value = TCol6
.Fields(6).Value = TCol7
.Fields(7).Value = TCol8
.Fields(8).Value = TCol9
.Fields(9).Value = TCol10
.Fields(10).Value = TCol11
.Fields(11).Value = TCol12
.Fields(12).Value = TCol13
.Fields(13).Value = TCol14
.Fields(14).Value = TCol15
.Fields(15).Value = TCol16
.Fields(16).Value = TCol17
.Fields(17).Value = TCol18
.Fields(18).Value = TCol19
.Fields(19).Value = TCol20
.Fields(20).Value = TCol21
.Fields(21).Value = TCol22
.Fields(22).Value = TCol23
.Fields(23).Value = TCol24
.Fields(24).Value = TCol25
.Fields(25).Value = TCol26
.Fields(26).Value = TCol27
.Fields(27).Value = TCol28
.Fields(28).Value = TCol29
.Fields(29).Value = TCol30
.Fields(30).Value = TCol31
.Update
End With
If Not FalseR Is Nothing Then ' Y mientras el recordSet no este vacio:
Set DataGrid3.DataSource = FalseR 'Llenamos el Datagrid2.
End If
End Sub
Si por ejemplo el Tcol13 esta vacío, ahí es donde envía el error, y así con todos los campos que se encuentren vacíos

1 respuesta

Respuesta
1
Si es Cadena
TCol13 = iif(isnull(DataGrid1.Columns("No_art").Value ),"",DataGrid1.Columns("No_art").Value )
Si es Numero
TCol13 = iif(isnull(DataGrid1.Columns("No_art").Value ),0,DataGrid1.Columns("No_art").Value )
Gracias por responder, he intentado como me indicaste y aun me envía el mismo mensaje, habrá otra manera
Sera que puedes depurar linea por linea.. y ver en que linea con exactitud tira el error.
También podría experimentar en lugar de mandar variables.. mandar valores fijos..
Por ejemplo si es cadena.. mandarle una cadena y si es numero lo mismo..
Para ver si se da el error.
Gracias mira, según los campos que tenga vacíos es donde envía el error, como comentaba si por ejemplo en el TCol13 esta vacío me envía ahí el error, y si por ejemplo el Tcol20 también esta vacío ahí me vuelve a enviar el error y así sucesivamente en todos los campos que se encuentren vacíos
La verdad llevo ya rato con este error y no he podido darle una solución
¿Seguro qué esta vacío?..
Los campos están bien definidos en tu tabla.. no puede pasar que el dato siendo numérico. Este definido en tabla como cadena o viceversa.
Ahora recuerdo una vez que manejando bdf's, un campo numérico desbordaba y al tratar de leerlo por el visual se generaba el error..
Revísalo y comentas..
Hola, pues deja te comento que he revisado minuciosamente mi tabla de access y todos los campos los tengo definidos como texto y si el error me aparece con todos los campos que están vacíos, eso ya lo corrobore por eso me di cuenta que el error solo me aparecía cuando los campos están vacíos, si no están vacíos no tengo ningún problema
Gracias por la ayuda he podido resolverlo de la manera creo más simple y ya no me envía errores y sin necesidad de tanto código
Tu sugerencia muy buena pero no me funciono
TCol13 = iif(isnull(DataGrid1.Columns("No_art").Value ),"",DataGrid1.Columns("No_art").Value )
lo resolvi asi
TCol13 = DataGrid1.Columns("No_art").Text
Me parece que era algo muy sencillo y que me complico el trabajo por 3 días, pero muchas gracias por tu ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas