Foros del Web » Programando para Internet » ASP Clásico »

Consultas sql y array

Estas en el tema de Consultas sql y array en el foro de ASP Clásico en Foros del Web. En primer lugar agradecer vuestra atencion. Soy nuevo en esto y perdonad si la pregunta es demasiado basica. Vayamos al asunto, estoy haciendo una web ...
  #1 (permalink)  
Antiguo 20/07/2004, 15:25
 
Fecha de Ingreso: julio-2004
Mensajes: 32
Antigüedad: 20 años, 9 meses
Puntos: 0
Consultas sql y array

En primer lugar agradecer vuestra atencion. Soy nuevo en esto y perdonad si la pregunta es demasiado basica.
Vayamos al asunto, estoy haciendo una web en la que de por momento utilizo asp y base de datos en acces, pues bien, tengo variables con array. Hasta ahi todo perfecto, consigo grabar registros y leerlos, el problema me surge al hacer una consulta sobre un campo que sea un array. Aqui va un ejemplo.

sql= "SELECT * FROM productos WHERE (REF LIKE '"&operador&"') OR (Modelo LIKE DescripcionIdioma(1))"

Con este tipo de consulta obtengo el siguiente mensaje de error.:
Cita:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21).El controlador ODBC no admite las propiedades solicitadas.
Agradecediria alguna ayuda.

Un saludo.
Chow
  #2 (permalink)  
Antiguo 20/07/2004, 15:32
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
mmm.. intentá así:


sql= "SELECT * FROM productos WHERE (REF LIKE '"&operador&"') OR (Modelo LIKE '"&DescripcionIdioma(1)&"')"
  #3 (permalink)  
Antiguo 20/07/2004, 15:34
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
aunque no entiendo eso de... "el problema me surge al hacer una consulta sobre un campo que sea un array". ¿El campo es un array?

me olvidé antes: bienvenido al foro
  #4 (permalink)  
Antiguo 20/07/2004, 15:48
 
Fecha de Ingreso: julio-2004
Mensajes: 32
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias por el recibimiento, y perdon pero no indique correctamente la sentencia sql. la correcta seria esta...

sql= "SELECT * FROM productos WHERE (REF LIKE '"&operador&"') OR (DescripcionIdioma(1) LIKE '"&operador&"')"

Perdon por el error.

Un saludo.
chow
  #5 (permalink)  
Antiguo 20/07/2004, 15:59
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
ahora si no entiendo nada

¿el campo es un array o el nombre del campo sale del array DescripcionIdioma(1)?

Si es la primera opción, lo siento. Nunca vi algo así.
Si es la segunda, ¿podría ser esta la solución?:

Código:
sql= "SELECT * FROM productos WHERE (REF LIKE '"&operador&"') OR (" & DescripcionIdioma(1) & " LIKE '"&operador&"')"
  #6 (permalink)  
Antiguo 20/07/2004, 16:09
 
Fecha de Ingreso: julio-2004
Mensajes: 32
Antigüedad: 20 años, 9 meses
Puntos: 0
Cita:
Iniciado por dazuaga
ahora si no entiendo nada

¿el campo es un array o el nombre del campo sale del array DescripcionIdioma(1)?

Si es la primera opción, lo siento. Nunca vi algo así.
Si es la segunda, ¿podría ser esta la solución?:
Veo que estas al quite dazuaga. Gracias por la respuestan tan rapida.
la respuesta es la primera, es decir, hay un campo en la base de datos que es un array en concreto DescripcionIdioma(1), DescripcionIdioma(2).
  #7 (permalink)  
Antiguo 20/07/2004, 16:43
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 5 meses
Puntos: 4
Creo que vas a volver loco a dazuaga

Por lo que yo sé o creo saber, un campo es el nombre de una columna en una base de datos, entonces el campo se define con una simple cadena de caracteres. Otra cosa distinta es el tipo de campo o el tipo de datos que contenga esa columna. Para Access sólo existen estos tipos de datos:

Texto
Memo
Número
Fecha/Hora
Moneda
Autonumérico
Si/No
Objeto OLE
Hipervínculo

Por lo tanto, en todo caso lo que puedes tener es un campo de texto con comas con el que rellenas el vector en cuestión. Y el nombre de la columna que sea DescripcionIdioma(1), lo que no significa que sea un vector.

Aclaremos un poco las cosas a ver si podemos depurar ese código.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #8 (permalink)  
Antiguo 20/07/2004, 16:52
 
Fecha de Ingreso: julio-2004
Mensajes: 32
Antigüedad: 20 años, 9 meses
Puntos: 0
Jolin, creo que la estoy armando.
Veamos tengo los siguientes campos en una base de datos...

Nombre campos tipo
----------------- ---------------
Id - Autonomurico
Ref - Texto
DescripcionIdioma(1) - texto
DescripcionIdioma(2) - texto
DescripcionIdioma(3) - texto

y necesito hacer una consulta sobre el campo DescripcionIdioma(1)

Si lo que te extraña es que el Nombre del campo sea DescripcionIdioma(1), el motivo, es que de esa forma a la hora de introducir los diferentes valores para los diferentes idioma hago una cosa asi...

for n=1 to 3
rs("descripcion("&n&")=--- el valor de los diferentes idiomas
next

y decirte que la lectura asi como la escritura me funciona perfectamente, lo que no consigo es establecer una consulta sobre un campo que tenga '(n).

No se si ahora he conseguido expresarme correctament. y perdonad por todo este lio.

Un saludo.
Chow
  #9 (permalink)  
Antiguo 20/07/2004, 17:17
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 5 meses
Puntos: 4
Umm... te lo miro mañana que ahora me voy a la cama, jeje. Pero una respuesta rápida.

No habría ningún problema si llamaras a los campos "DescripcionIdioma1", "DescripcionIdioma2", ... y así te ahorras posibles omisiones de paréntesis y otras zarandajas.

Cuando hagas la consulta simplemente:

for n=1 to 3
rs("DescripcionIdioma" & n) = _____ 'el valor de los diferentes idiomas
next

Te faltaba cerrar un paréntesis de la otra forma.

Un saludo
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #10 (permalink)  
Antiguo 20/07/2004, 17:33
 
Fecha de Ingreso: julio-2004
Mensajes: 32
Antigüedad: 20 años, 9 meses
Puntos: 0
Ok. Bravenap, resuelto, con lo que propones me soluciona el problema.

Muy agradecido.

ah, teneis mucha paciencia.


Un saludo.
Chow
  #11 (permalink)  
Antiguo 21/07/2004, 10:52
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Je, ahora si entiendo

Bueno, parece que ya está solucionado.. pero igual te comento que si el campo tiene "caracteres raros" (los paréntesis, eñes, tildes, espacios, etc), lo que se hace es meter el campo entre corchetes. Supongo que así debería funcionar:


sql= "SELECT * FROM productos WHERE (REF LIKE '"&operador&"') OR ([DescripcionIdioma(1)] LIKE '"&operador&"')"


saludos
  #12 (permalink)  
Antiguo 21/07/2004, 11:43
 
Fecha de Ingreso: julio-2004
Mensajes: 32
Antigüedad: 20 años, 9 meses
Puntos: 0
Aunque ya lo tengo resuelto, gracias por tu interes, es más creo que me puede servir de ayuda lo de utilizacion de los [] para caracteres especiales.

Un saludo
Chow
  #13 (permalink)  
Antiguo 21/07/2004, 13:59
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 5 meses
Puntos: 4
Esa no me la sabía dazuaga , pero ¿qué hacen exactamente los corchetes?
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #14 (permalink)  
Antiguo 21/07/2004, 14:14
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
supongamos que tenés dos tablas:

- "tabla_1", con un campo llamado "campo_1"
- "tabla 2", con un campo llamado "campo 2"

para el primer caso, podrías hacer esta SQL:

SQL = "select * from tabla_1 where campo_1 = 'hola'"

pero no para el segundo, porque el motor de la BD no entendería en donde termina la cláusula FROM. Para que entienda que el nombre de la tabla es "tablaESPACIO2", debés colocar sus nombres entre corchetes:

SQL = "select * from [tabla 2] where [campo 2] = 'hola'"

saludos
  #15 (permalink)  
Antiguo 21/07/2004, 14:19
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Código:
Se utilizan los caracteres comodín como sustitutos de otros caracteres cuando se especifica un valor que se desea buscar y:

Sólo se conoce parte del valor. 
Se buscan valores que empiezan con una cierta letra o que coinciden con un modelo. 
Los caracteres comodín están concebidos para ser utilizados con campos que tienen tipo de datos texto. A veces, puede usarlos también con otros tipos de datos, como fechas, si no utiliza el panel de control de Microsoft Windows para cambiar la configuración regional para estos tipos de datos.

Si utiliza el motor de base de datos Microsoft Jet SQL en una base de datos de Microsoft Access (base de datos de Microsoft Access: colección de datos y objetos (como tablas, consultas o formularios), que está relacionada con un tema o propósito concreto. El motor de base de datos Microsoft Jet administra los datos.), puede usar los caracteres comodín siguientes en consultas (consulta: pregunta sobre los datos almacenados en las tablas o solicitud para llevar a cabo una acción en los datos. Una consulta puede unir datos de varias tablas para servir como origen de datos de un formulario, informe o página de acceso a datos.) y expresiones (expresión: cualquier combinación de operadores matemáticos o lógicos, constantes, funciones y nombres de campos, controles y propiedades que evalúa a un solo valor. Las expresiones puede realizar cálculos, manipular caracteres o probar datos.) para buscar elementos como valores de campo, registros o nombres de archivo. Igualmente, puede utilizar estos caracteres en los cuadros de diálogo Buscar y Reemplazar en una base de datos de Access o un proyecto de Microsoft Access (proyecto de Microsoft Access: archivo de Access que se conecta con una base de datos de Microsoft SQL Server y se utiliza para crear aplicaciones cliente-servidor. Un archivo de proyecto no contiene datos ni objetos basados en definiciones de datos, como, por ejemplo, tablas o vistas.).

Carácter Descripción (Description) Ejemplo 
* Hace coincidir cualquier número de caracteres. Puede ser utilizado como el primero o el último carácter de la cadena de caracteres. qu* encuentra quién, quiero y quieto 
? Hace coincidir cualquier carácter alfabético individual. B?l encuentra bala, billete y bola 
[ ] Hace coincidir cualquier carácter individual situado entre los corchetes. B[ao]l encuentra bala y bola pero no billete 
! Hace coincidir cualquier carácter que no se encuentre entre los corchetes. r[!oc]a encuentra risa y runa pero no roca ni rosa 
- Hace coincidir cualquier carácter de un intervalo de caracteres. Debe especificar el intervalo en orden ascendente (A a Z, no Z a A). b[a-c]d encuentra bad, bbd y bcd 
# Hace coincidir cualquier carácter numérico individual. 1#3 encuentra 103, 113 y 123 

Para buscar elementos como valores de campo, registros o nombres de archivos en un proyecto o una base de datos de Microsoft Access que utiliza una sintaxis compatible con Microsoft SQL Server, utilice los caracteres comodín ANSI-92 siguientes.

Nota  Si utiliza los cuadros de diálogo Buscar y Reemplazar en un proyecto o una base de datos de Access que utiliza una sintaxis compatible con Microsoft SQL Server, debe usar caracteres comodín de Microsoft Jet SQL.

Carácter Descripción (Description) Ejemplo 
% Hace coincidir cualquier número de caracteres. Puede ser utilizado como el primero o el último carácter de la cadena de caracteres. qu% encuentra quién, quiero y quieto 
_ Hace coincidir cualquier carácter alfabético individual. R_sa encuentra rosa, risa y rusa 
[ ] Hace coincidir cualquier carácter individual situado entre los corchetes. B[ao]l encuentra bala y bola pero no billete 
^ Hace coincidir cualquier carácter que no se encuentre entre los corchetes. r[^oc]a encuentra risa y rema pero no roca ni rosa 
- Hace coincidir cualquier carácter de un intervalo de caracteres. Debe especificar el intervalo en orden ascendente (A a Z, no Z a A). b[a-c]d encuentra bad, bbd y bcd 

Notas

Si utiliza caracteres comodín para buscar otros caracteres comodín como asterisco (*), interrogación de cierre (?), signo de número (#), corchete de apertura ([) o guión (-), debe incluir el elemento que está buscando entre corchetes. Si busca una exclamación de cierre (!) o un corchete de cierre (]), no es necesario que lo incluya entre corchetes. 
Por ejemplo, para buscar una interrogación de cierre, escriba [?] en el cuadro de diálogo Buscar. Si busca un guión y otros caracteres simultáneamente, coloque el guión antes o después de todos los demás caracteres dentro de los corchetes. (No obstante, si tiene una exclamación de cierre (!) después del corchete de apertura, coloque el guión después de la exclamación.)  

No se pueden buscar al mismo tiempo un corchete de apertura y uno de cierre ([ ]) ya que Microsoft Access interpreta esta combinación como una cadena de longitud cero (cadena de longitud cero: cadena que no contiene caracteres. Puede utilizar una cadena de longitud cero para indicar que sabe que no hay ningún valor para un campo. Para especificar una cadena de longitud cero, escriba dos comillas dobles sin espacio entre ellas (" ").). Debe escribir entre corchetes los corchetes de apertura y cierre ([[ ]]).
  #16 (permalink)  
Antiguo 21/07/2004, 14:22
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Bueno, en realidad puse un ejemplo para el tema de los espacios.. pero, y no me preguntes el por qué , ocurre lo mismo para un campo llamado, digamos, "contraseña". Sin los corchetes da errores y con ellos no.
  #17 (permalink)  
Antiguo 21/07/2004, 14:42
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 5 meses
Puntos: 4
Bien, gracias a los dos.

Por cierto, Myakire, esa información ¿está en alguna página?
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #18 (permalink)  
Antiguo 21/07/2004, 14:57
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
STOP, no sé de dónde saqué que los campos cuyos nombres contengan eñes o tildes deben ir entre corchetes ... El caso es que no es así, luego de hacer pruebas me doy cuenta que no es necesario :D

Lo que si es así es el tema de los campos/tablas con espacios, paréntesis, "-", etc en su nombre

De lo otro, hagan de cuenta que no dije nada
  #19 (permalink)  
Antiguo 21/07/2004, 15:01
 
Fecha de Ingreso: julio-2004
Mensajes: 32
Antigüedad: 20 años, 9 meses
Puntos: 0
ok. tomando nota.


Por cierto, veamos quien me puede aclarar la duda de este post.
indico el link para no repetirme

http://www.forosdelweb.com/f15/utilizacion-del-getrows-como-paginacion-conveniente-218550/
  #20 (permalink)  
Antiguo 22/07/2004, 07:44
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
La información la saque de la documentacion del Office 2003.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:18.