Necesito darle el valor de un dato en mi base de datos a una variable
'Coloca esta funcion en un modulo para que la invoques desde cualquier parte
Public Function SCANDATA(Leter As String, Optional TVALUE As Boolean) As Variant 'Mecanismo de busqueda multivalues
Dim RS As Recordset: Set RS = New Recordset
RS.Open Leter, DTE.Connection1, adOpenDynamic, adLockReadOnly
If TVALUE = False Then
Select Case RS.Fields(0).Type
Case 202, 203, 129 'Valores tipo texto
SCANDATA = IIf(RS.RecordCount = 0, "", IIf(IsNull(RS!indicador) = True, "", Trim(RS!indicador)))
Case 3, 4, 5 'Valores tipo Numeros
SCANDATA = IIf(RS.RecordCount = 0, 0, IIf(IsNull(RS!indicador) = True, 0, RS!indicador))
Case 135 'Valores tipo Fecha
SCANDATA = IIf(RS.RecordCount = 0, "01/01/1900", IIf(IsNull(RS!indicador) = True, "01/01/1900", RS!indicador))
Case 11 'valores boleano
SCANDATA = IIf(RS.RecordCount = 0, 0, IIf(IsNull(RS!indicador) = True, 0, RS!indicador))
End Select
Else
SCANDATA = IIf(RS.RecordCount > 0, True, False)
End If
Set RS = Nothing
End Function
'Para usarla
dim VALOR as VARIANT
VALOR = scandata("SELECT HoraH as indicador FROM Lunes WHERE Auto = " & texto)
Esta función busca un dato a la vez es una database.
1- A la función debes pasarle la secuencia SQL que quieres que busque
2- El nombre del campo en cuestion debe ser declarado como el nombre indicador o sea 'NAMEFIELDS as indicador'. Si el valor no existe entonces la función debuelve un valor acorde al tipo de datos.
Cadena vacia para los textos
Cero para los numericos
#01/01/1900# para las fecha
False para los voleanos
Ahora si lo que quieres es averiguar si un valor existe entonces el uso correcto seria
VALOR = scandata("SELECT HoraH as indicador FROM Lunes WHERE Auto = " & texto, true) en cuyo caso solo debolvera TRUE si existe
por ejemplo
if scandata("SELECT HoraH as indicador FROM Lunes WHERE Auto = " & texto, true) = true then
msgbox"OK"
end if
por ultimo la cadena de coneción que se empleo es el dataenvironmes 'DTE.Connection1' no obstante emplea la que quieras