Necesito información para realizar un programa en Visual Basic con valores de una base de datos

Mi problema es el siguiente.
Necesito hacer un programa que dependiendo de unos criterios me tiene que hacer una determinada operación.
Los criterios están en un base de datos:
CONCRETAMENTE en una tabla llamada criterios que contiene una serie de campos por ejemplo:
Estado edad importe
<>A >30 30?
Este criterio puede ir variando con el tiempo.
Como puedo leer ese criterio desde visual basic ya que con un if no me deja.
Muchas gracias
Respuesta
1
Imagino que esos criterios los usas para consultar otra base de datos u otra tabla de la misma base. Hasta ahí no creo que haya problemas.
Pero no entiendo a qué te refieres con "leer" el criterio, ni cómo no te deja el IF.
¿No te deja hacer esto?
If RecordSet1("estado")="loquesea" Then
...
End If
¿Es eso?
¿Qué quieres hacer exactamente? ¿Podrías concretar un poco?
dim criterio as string
el adodc1.recordset("edad") va a contener edad <> 50
criterio="edad <> 50"
if criterio then
...
Endif
No, claro, eso no se puede hacer (salvo que uses VBScript, que no es el caso).
En este caso lo que tienes que hacer es "parsear" la cadena, lo cual es tedioso.
Siguiendo tu ejemplo:
Const Operadores="<>="
Const Part1=1,Operador=2,Part2=3,
dim op(3) as String
dim x as integer
dim c as string*1
dim i as integer
i=1
for x=1 to len(criterio)
c=mid(criterio,x,1)
if c<>" " then
if instr(operadores,c)>0 then
'Comienza el operador
if i=Part1 then i=Operador
else
'Termina el operador
if i=Operador then i=Part2
end if
op(i)=op(i) & c
end if
next
Esto debería separar la expresión en sus tres componentes:
op(1)="edad"
op(2)="<>"
op(3)="50"
Luego tendrías que tener mucha paciencia:
Select Case op(1)
case "edad":
if Evalua(edad,op(2),op(3) then
...
end if
case "otracosa":
...
End Select
Como verás, he metido una función "Evalua", que tendría este aspecto
Function Evalua(a as variant,b as string,c as string) as Boolean
Dim Val as Variant, op as string*1
Val=iif(isNumeric(a),CCur(c),c)
select case mid(b,1)
case ">":
evalua=(a>val)
case "<":
evalua=(a<val)
case "=":
evalua=(a=val)
case else:
evalua=false
end select
if len(b)>1 then
evalua=evalua and evalua(a,mid(b,2),c)
end function
Esta función se puede ampliar con lo que te de la gana, pero así funciona muy bien.
Bueno, todo esto lo he tecleado de corrido y ´sin probarlo, así que es posible que te vaya algún bug por ahí.
Espero haberte ayudado. En caso contrario, avísame.
TE AGRADEZCO MUCHO tu respuesta, ya que has sido el único que me ha podido ayudar.
Si utilizase vbscript, como lo haría que diferencia hay entre visual y vbscript
Antes de nada, he de corregir un bug que he visto. En la función Evalúa, la línea:
if len(b)>1 then
evalua=evalua and evalua(a,mid(b,2),c)
tiene que ser
if len(b)>1 then
evalua=evalua OR evalua(a,mid(b,2),c)
Aclarado esto, en VBScript hay un par de instrucciones que sirven para ejecutar instrucciones que están contenidas en string.
Estas son:
Eval (expresion)
Execute expresion
La diferencia entre ambas es que Eval devuelve un valor, y Execute no. Entonces, en estas dos instrucciones:
x=3
a=Eval("x=2")
Execute "x=2"
La primera introduce en "a" el valor "False" que devuelve la función, mientras que la segunda asigna a "x" el valor "2".
Respecto a las diferencias entre VB y VBScript, el VB se compila para ejecutarse, y genera ficheros EXE, OCX o DLL. El VBScript es texto, y no se compila, sino que el sistema operativo, a través de un programa (en Windows) o una dll (en IIS), lo interpreta y ejecuta.
El VBScript se usa para Macros y otros sistemas de automatización en aplicaciones (Office o el propio Windows, por ejemplo), o en páginas dinámicas ASP (Active Server). También puede usarse como sustituto del JavaScript en las páginas DHTML, pero como sólo funciona con MS Internet Explorer, nadie lo usa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas