| |  |  | Miembros: Mensajes: Temas: Online: Ultimo Miembro: | | |  | | |
 | 
26-08-2005, 15:19:04
| | Gran Participación en el Foro | | Registrado: ago 2004 Ubicación: Tunja Posts: 243
| | Tipos de datos en SELECT Cuáles son los tipos de datos que acepta un SELECT? He visto que por ejemplo cuando se necesita buscar una cadena de texto, en el select se coloca este entre comillas simples p. ej. 'palabra'; cuando es numérico se coloca entre porcentajes p. ej. '%número%'. Quisiera saber que otros tipos de datos le puedo mandar al select para que realice el filtro de la BD, ya que se me han presentado varios errores a causa de esto.
De antemano gracias por sus respuestas. | 
26-08-2005, 15:36:29
|  | Gran Participación en el Foro | | Registrado: jun 2005 Posts: 173
| | Te envio un manualito sencillo pero muy practico para realizar consultas en SQL... Me sirvio y me sigue sirviendo para cosas que se me olvidan...
te lo adjunto... | 
26-08-2005, 15:45:36
|  | Administrator | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.431
| | Amigo HERNAN: Creo que tienes un error de concepto... La cláusula SELECT tiene que ir seguida de una lista de nombres, de los campos que deseas "seleccionar" para que los presente el RecordSet; Si pones "SELECT *" te presentará TODOS los campos. Pero en la cláusula SELECT no se usan ni comillas ni almohadillas ni nada, sólo "comas" para separar los campos de la relación.
Me imagino que te refieras a la cláusula WHERE, que es la que indica las condiciones que tiene que cumplir la selección (o el filtro, si lo prefieres). Y como veo que andas un poco verde en estos temas, que constituyen lo que se conoce como SQL, te recomiendo una ojeada a un Manual de este lenguaje, aunque sea lo más elemental. En esta sección de nuestro portal http://www.vb-mundo.com/verTutorial....t=4&NomCat=SQL podrás elegir, y ya verás cómo te animas y pronto pasarás a leer otro más avanzado... | 
26-08-2005, 22:07:48
| | Gran Participación en el Foro | | Registrado: ago 2004 Ubicación: Tunja Posts: 243
| | Amigo Movilla gracias por tu respuesta, en cuanto a la forma de utilización del select ya la tengo más que aprendida. A lo que me refería era a los tipos de datos que se le podían pasar en la cláusula WHERE por ejemplo:
Tipo texto:
SELECT * FROM MiTabla WHERE campo = 'texto'
Tipo numérico:
SELECT * FROM MiTabla WHERE campo = '%numero%'
Si alguien sabe si hay algun otro comodín para diferenciar tipos de datos les agradecería mucho me lo hicieran saber.
Espero me haya hecho entender esta vez.
Gracias por sus respuestas. | 
27-08-2005, 00:42:54
|  | Administrator | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.431
| | Amigo Hernan: Muchas veces nos obligáis a daros respuestas que podéis considerar "ofensivas" porque os tomamos por novatos... Yo, la verdad, cuando doy una respuesta no tengo tiempo para buscar en vuestros anteriores mensajes y comprobar cuál es vuestro nivel de formación... En esta ocasión me limité a apreciar tu actual mensaje, y cuando vi que preguntabas literalmente Cuáles son los tipos de datos que acepta un SELECT? no me quedó más remedio que sospechar que andabas por preparatorio... porque tú mismo reconocerás que no es lo mismo un SELECT que un WHERE, aunque ambos formen parte de una sentencia SQL... Luego resulta que se ha tratado, sin duda, de un fallo involuntario en tu expresión... Pero ni siquiera te dignas apuntar esa posibilidad en tu nueva respuesta, sino que educadamente, eso sí, manifiestas un solapado enfado dejando bien claro que mi consejo está de más, porque eso lo tienes más que aprendido... Quizás por eso no consideras necesario estudiar más, y prefieres que te lo den digerido, a pesar de que hablas de otros comodines, refiriéndote seguramente al ejemplo del usado en WHERE campo = '%numero%', que no sé de dónde lo has sacado...
Sigo aconsejándote que leas un Tutorial, que por leer aunque sea un poco de más no vas a perder nada. De poco va a servirte que yo te diga que un campo numérico se pone sencillamente WHERE campo = numero... Es mejor que tomes los conceptos de forma más arraigada. Y al final sí que me lo agradecerás sinceramente. | 
27-08-2005, 10:31:12
| | Moderador | | Registrado: dic 2002 Ubicación: Madrid Posts: 4.271
| | Pues no puedo por menos que darte mi más sincera enhorabuena, sobre todo porque personalmente me sucede todo lo contrario... cada vez que repaso -con cierto interés- un libro que ya he leido más de mil veces, me percato de que aún me faltan muchas cosas que aprender...
Una de las cosas que descubrí no hace mucho, es que el símbolo '%' se suele utilizar en sentencias de aproximación junto con la directiva LIKE, es decir, solicitamos al motor de búsqueda que nos devuelva resultados de aquellas filas susceptibles de contener toda o parte de la cadena solicitada, sustituyendo el carácter '%' por cualquier otra cosa.
Desconocía que pudiera emplearse en datos numéricos, pero lo investigaré en mis libros y apuntes -que son el mejor tesoro que poseo- pues como ya te comento al inicio, a pesar de mi edad, sólo sé que no sé nada..... y que cuanto más estudio, mejor me salen las cosas.
No puedo felicitarte por el aparente rechazo que manifiestas al buen consejo de J.M.Movilla, el cual, lejos de ofender y con la mejor de sus intenciones, pretende enriquecer a todo aquel capaz de comprender su contenido.
Yo, si no lo tomas a mal, reforzaría el mensaje de nuestro inestimable amigo Movilla sobre el hecho de que la lectura y adquisición de nuevos detalles de temas que afirmamos conocer sobradamente, nunca le han hecho mal a nadie sino todo lo contrario..
Suelen mejorar notablemente nuestras aptitudes y actitudes.
Espero que los consejos los aceptes en su justa medida y si acaso te ofenden, te ruego sepas disculpar nuestra torpeza. | 
27-08-2005, 16:24:21
|  | Usuario VIP del Foro | | Registrado: jul 2004 Ubicación: Barcelona Posts: 658
| | Amigo Hernan, al principio me resistí a participar en este post pero al ver las respuestas no he podido resistir la tentación, espero que no te sepa mal.
No te tomes a mal los comentarios de J. Maria y Leonardo, pero entiende que cuando se contestan preguntas (entre los dos llevan mas de 4.600 post) se emplea mucho tiempo, y a veces, tambien hay que decirlo, se pierde mucho tiempo porque son preguntas muy básicas que la mayoría de las veces se responderian simplemente buscando la ayuda de Visual Basic o el buscador del Foro.
Si ves la cantidad de respuestas realizadas por ambos comprobarás que han usado mucho de su tiempo en hacer algo útil para los demás así que una respuesta como la tuya, quiero creer que sin ninguna mala idea, puede 'molestar' (al fín y al cabo uno, en su ignorancia piensa que, si ya sabes mucho de Select no haría falta hacer esa pregunta).
Si eres de los que piensan, muy acertadamente creo yo, que la experiencia tiene valor, no tienes mas que comprobar las edades de J. María y Acalanto (Leonardo) con lo que creo que algo habrán aprendido durante todo este tiempo, pero seguro que están convencidos de que algo mas pueden aprender.
Así que te animo a que no te lo tomes a mal sino como unos 'toques de atención' de los maestros que, sinceramente creo, tienen muchísimo valor y que a veces, te lo aseguro, tambien por mi edad, hubiese necesitado en algún momento y nadie quiso dármelos. (creo que se entiende que me estoy refiriendo a los toques).
Y como lo que querías era mas 'comodines' ahí te va otro para las fechas, utilizando tu mismo ejemplo: Código: SELECT * FROM MiTabla WHERE campo = #Fecha# Aunque, como seguro ya sabes, si lo que quieres escribir entre los 'comodines' son variables ninguno de los ejemplos funcionaría tal como están escritos.
Un abrazo :smt006
__________________
Saludos
José Antonio
| 
29-08-2005, 20:21:34
| | Un Nuevo Amigo | | Registrado: jul 2005 Posts: 25
| | Hala a todos.
Estuve pensando en postear esta respuesta. ¿Porque? En primer lugar no es una respuesta. Es una pregunta, pero relacionada con la anterior. Ya busque el la ayuda de MSDN y en 2 tutoriales y no me resuelben la duda.
Tengo un texbox llamado txtNombre donde el usuario introduce un nombre para hacer una consulta. Y tengo una variable Dim variable as string
variable =txtNombre.text
y tengo esta instruccin set MiBaseDatos=workspaces(0).OpenDatabase("C:\cliente s.MDB")
Set Tabla = MiBaseDatos.OpenRecordset(" SELECT * FROM provedor WHERE Nombre = variable ", dbOpenDynaset) ' la tabla se llama provedor y el campo es el nombre
(Esto me da un error ) error '3061'
demasiados o pocos parametros uno previsto
- y si pongo Set Tabla = MiBaseDatos.OpenRecordset(" SELECT * FROM provedor WHERE Nombre = 'Josmar' ", dbOpenDynaset)
(Esto no me da ningun tipo de error). Entonces el error esta al utilizar la variable.
Entonces mi pregunta es como utiliso variables con la instruccion WHERE
-Otra duda es como paso los datos de una tabla a un label .
Ejemplo: Set Tabla = MiBaseDatos.OpenRecordset(" SELECT Nombre FROM provedor ", dbOpenDynaset) label.caption=""&tabla ' Esto me da error
Ojala y me haya explicado y por consecuencia me contesten el mensaje
un abrazo y de antemano gracias por tomarse el tiempo de leerlo.
:smt004 :smt004
__________________
La desconfianza es madre de la seguridad.
| 
29-08-2005, 20:36:06
| | Moderador | | Registrado: dic 2002 Ubicación: Oviedo - Asturias Posts: 1.251
| | VAmos por partes Josmar
No mezcles los temas, lo que tú preguntas sí debería ir en un post distinto, pero igualmente ahí la respuesta:
La variable "variable" debe estar fuera de las comillas dobles para que pueda ser evaluada, ya que dentro de ellas es la PALABRA "variable", así que:
Set Tabla = MiBaseDatos.OpenRecordset(" SELECT * FROM provedor WHERE Nombre ='" & variable & "' ", dbOpenDynaset)
Además, como ese campo , Nombre, es cadena en la base de datos, el valor deberá ir entre comillas. Tal y como está puesto diferenciará entre mayúsculas y minúsculas, si quieres ignorar esa diferencia deberás poner:
Set Tabla = MiBaseDatos.OpenRecordset(" SELECT * FROM provedor WHERE Nombre LIKE '" & variable & "' ", dbOpenDynaset)
Y ya está.
En cuanto a tu segunda pregunta, aunque el resultado sea un único registro constará de varios campos, así que resulta, imposible no pero sí incongruente, pretender pasárselo a una label. Para pasar un valor a una label deberías indicar "qué campo" y de "qué registro" le quieres pasar el valor (ten en cuenta que una select pueder dar como resultado más de un regsitro), para hacer esto:
Label1.Caption=tabla.Fields("NombreDelCampo")
o también:
Label1.Caption=tabla!NombreDelCampo
:smt004 | 
30-08-2005, 13:50:22
|  | Gran Participación en el Foro | | Registrado: jun 2005 Posts: 173
| | Josmar creo desde mis humildes conocimientos que la respuesta esta en lo siguiente:
set MiBaseDatos=workspaces(0).OpenDatabase("C:\cliente s.MDB")
Set Tabla = MiBaseDatos.OpenRecordset(" SELECT * FROM provedor WHERE Nombre ='"& variable &"'", dbOpenDynaset)
y no
set MiBaseDatos=workspaces(0).OpenDatabase("C:\cliente s.MDB")
Set Tabla = MiBaseDatos.OpenRecordset(" SELECT * FROM provedor WHERE Nombre = variable ", dbOpenDynaset)
Espero haberte ayudado.... en la solucion...
__________________
---- Wilfredo Polanco ----
República Dominicana, Santo Domingo, D.N.
| | Herramientas | | | | Desplegado | Mode Lineal |
Normas de Publicación
| no Puedes crear nuevos temas no Puedes responder a temas no Puedes adjuntar archivos no Puedes editar tus mensajes Código [IMG] está habilitado Código HTML está deshabilitado | | | La franja horaria es GMT. Ahora son las 02:08:49.
Powered by vBulletin® Version 3.6.8 Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design
|  |