Select en el VBScript de Access

Tengo una duda con un select que llevo rato haciendo pero no me funciona, a ver si ustedes lo entienden:
1.- La sentencia docmd y el select:
filtro = "SELECT [Ventas por mes].* FROM [Ventas por mes] WHERE ((id = " & id.Value & ") AND (año = " & agno.Value & "))"
DoCmd. RunSQL filtro
2.- El error:
"Una acción EjecutarSQL requiere como parámetro una sentencia SQL"
3.- La estructura del docmd:
Docmd. Runsql(sentencia,[usar transacción])
NOTA1: Esto lo requiero para revisar si el registro que estoy solicitando existe en mi tabla. ¿De una vez podrían ayudarme a ver como verifico esto?
NOTA2: Si tienen otra sugerencia distinta al SELECT, me serviría también.

1 respuesta

Respuesta
1
Para comprobar lo que quieres, si un registro existe o no en una tabla, lo mejor es utilizar una función existente en Access (DCount).
La función DCount nos devuelve el número de registros existentes en una tabla que cumplen las condiciones que le indiquemos. Su sintaxis es la siguiente:
DCount ("CampoAContar", "TablaAConsultar", "ClausulaWHEREsinEstaPalabra") = Nº regitros que cumplen las condiciones
(Nota: CampoAContar normalmente es el campo que mas rabia te de... Normalmente se utiliza uno
que utilices a su vez en la ClausulaWHERE...)
Por lo tanto, y utilizando ésto, este podría ser tu código
If DCount("Id", "Ventas por mes", "Id = " & id.Value & " AND Año = " & agno.Value & ")") Then
MsgBox "Existe"
Else
MsgBox "No existe"
End If
Sólo hay una puntualización: La sentencia que ves arriba es para el ejemplo concreto que escribías
suponiendo que Id y Año sean numéricos. En el caso de que lo que vauas a comparar sea un campo texto
deberás poner un apostrofe (') después del signo igual de comparación de ese campo y otro justo después del valor
que este comparando, ya que los Textos a comparar deben ir entre apostrofes.
Ejemplo, suponiendo ahora que Id y Año son tipo Texto:
DCount("Id", "Ventas por mes", "Id = '" & id.Value & "' AND Año = '" & agno.Value & "')") Then
^ ^ ^ ^
Ya ves que de esta forma con una sola linea esta solucionado el problema. En este caso solo puedes tener posibles errores como te decía con los apostrofes (que se te pueden olvidar) al hacer igualdades con tipos Texto, u otros caracteres especiales que se utilizan para fechas, horas, etc, pero que no es el momento de detallar.
Pruébalo y aquí estoy para lo que necesites. Si tienes alguna duda, házmelo saber y te ayudare a subsanarla lo antes posible, que ya veo que llevas algún tiempo esperándolo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas