lio con .... Fiel.type in dao and adodb

Dudas sobre código
AngelMiguel
Nivel 1
Mensajes: 14
Registrado: Mar Nov 21, 2017 4:34 pm

lio con .... Fiel.type in dao and adodb

Mensajepor AngelMiguel » Mié Oct 10, 2018 5:10 pm

Saludos ,

Tengo una base de datos en ms access, mediante adodb cargo los datos que necesito en un formulario, desconectado.
Despues filtro desde otro formulario los datos que cargo mediante la function nº (1)
Pretendo obtener el type correcto en formato texto, pero tengo problemas cuando identifico los campos fecha; y los long que me devuelve integer... etc, ya que aunque me reconoce el type=7 la function (2) me devuelve un tipo incorrecto, aunque vereis que chapuza en la function, existe colusión entre los tipos DAO y ADODB.

Alguna sugerencia?

(1)
Set rsCn = Form__01_Presupuestos_Menu.Lista1.Form.Recordset.Clone
With rsCn
For iI = 0 To rsCn.Fields.Count - 1
If Left(rsCn.Fields.Item(iI).Name, 2) <> "ID" Then ' desecho los registros de identificación
sA = sA & rsCn.Fields.Item(iI).Name & ";" & TypeCampo(rsCn.Fields.Item(iI).Type) & ";"
End If
Next
End With
Set rsCn = Nothing
With Campos
.RowSource = sA
End With

(2)
(function en proceso...)
Public Function TipoCampo(inttipo As Integer) As String
On Error GoTo TipoCampo_Error
Select Case inttipo
Case 11
TipoCampo = "dbBoolean"
Case dbByte
TipoCampo = "dbByte"
Case 3
TipoCampo = "dbInteger"
Case dbLong
TipoCampo = "dbLong"
Case dbCurrency
TipoCampo = "dbCurrency"
Case dbSingle
TipoCampo = "dbSingle"
Case adDouble
TipoCampo = "dbDouble"
Case 7
TipoCampo = "dbDate"
Case 202
TipoCampo = "dbText"
Case dbLongBinary
TipoCampo = "dbLongBinary"
Case 203
TipoCampo = "dbMemo"
Case dbGUID
TipoCampo = "dbGUID"
Case Else
TipoCampo = "dbText"
Exit Function
End Select
On Error GoTo 0
Exit Function
TipoCampo_Error:
MsgBox "Error " & err.Number & " (" & err.Description & ") in procedure TipoCampo, line " & Erl & "."

emiliove
Colaborador
Reto04
Mensajes: 344
Registrado: Lun Nov 23, 2015 4:05 pm

Re: lio con .... Fiel.type in dao and adodb

Mensajepor emiliove » Sab Oct 13, 2018 2:04 am

Hola Angel

Mira esta forma que tiene Enrique, para conocer el campo y type

http://www.mvp-access.es/softjaen/

Si desea comprobar ciertas propiedades de los campos (tamaño definido, de almacenamiento, etc.), puede ejecutar el siguiente ejemplo, siempre y cuando utilice la biblioteca de ADO:

Código: Seleccionar todo

Dim rst As ADODB.Recordset
Dim fld As ADODB.Field

' Creamos un nuevo objeto Recordset
'
Set rst = New ADODB.Recordset
With rst
    .CursorType = adOpenKeyset
    .LockType = adLockOptimistic
    .Open "Tabla1", oConexion, , , adCmdTable
End With

' Leemos, campo a campo, todos los registros de la tabla
'
Do
    For Each fld In rst.Fields
        MsgBox "Tamaño definido: " & fld.DefinedSize & " bytes." & vbCrLf & _
                    "Número de caracteres: " & Len(fld.Value) & vbCrLf & _
                    "Tamaño de almacenamiento: " & fld.ActualSize & " bytes." & vbCrLf & _
                    "Tipo de dato: " & fld.Type, , fld.Name & ": " & fld.Value
    Next
    rst.MoveNext
Loop Until rst.EOF


Espero sea lo que quieres, saludos.

AngelMiguel
Nivel 1
Mensajes: 14
Registrado: Mar Nov 21, 2017 4:34 pm

Re: lio con .... Fiel.type in dao and adodb

Mensajepor AngelMiguel » Dom Oct 14, 2018 12:28 am

Saludos,

Lo probaré y si funciona lo integro en mi programa de ResizeObjects, gracias por la ayuda.

En caso contrario insistiré.

Atentamente

AngelMiguel


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado