Consultas En Sql delphi 7 con Base de Datos access
Buenas Tardes
Bienvenidos Todos a este nuevo tema que hoy abro.. hoy quiero aprender y tambien que los demas aprendan como se pueden realizar consultas en SQL mediante delphi hacia una BD creada en microsoft access y conectada a delphi mediante componentes ADO. los temas que me interesan aprender son; .como realizo una consulta sensilla en SQL mediante delphi en una sola tabla de access. .como se manejan dos consultas en una misma tabla. de access osea consultar 2 campos de la tabla y aplicar condiciones . como hacer mas de tres consultas en diferentes tablas en la misma BD de access, osea consultar varios campos entre diferentes tablas en la misma BD espero que agreguen y aporten su granito de arena para conocer este excelente tema de intereses para todos nosotros ((los novatos)):D un saludo a todos los del foro especialmente a caral saludos... |
Amigo luisraad, por favor, el trabajo del colegio no nos lo encargues a nosotros, ya que entonces tú no aprenderás ;)
¿Hace falta que te recuerde nuestra guía de estilo? |
Cita:
Consultar 2 campos, 1 campo, 84 campos o cien mil campos... no es hacer 2 consultas, 1 consulta, 84 consultas, etc. ¿Por qué no miras un simple tutorial de SQL?, una búsqueda en google devuelve millones de entradas para "tutorial sql". |
Hola
Access tiene un generador de consultas, que a mi parecer es muy bueno. Se puede hacer con el asistente, este ira colocando los datos que se necesiten o se puede hacer directamente en sql. Yo lo que hago es usar el asistente y una vez que me genera la consulta, si se como, la modifico a mi antojo. Creo que la mejor forma de aprender SQL es usando este generador. La pregunta que haces es muy genérica, sera muy difícil contestarla. Saludos |
seria bueno que colocaras tus dudas, solo asi podremos ayudarte
coloca algo concreto, no olvides describir brevemente la estrutura de las tablas y algo de la informacion. como esta distribuida y como la quieres ordenar o agrupar en las consultas |
oscar en primer lugar esto no es una tarea de colegio la verdad me ofende demasiado ese comentario.
y si se refieren a mi como ignorante pues todo esta bien, abri estos temas porque la verdad hay mucha gente como yo que estamos principantes en este tema y si uno tiene un error pues lo idoneo es ayudar al que no sabe es corregirlo de buena manera, no juzgarlo porque no sabe, de todas formas creo que me equivoque de foro, me madan a esta pagina porqe en verdad me vieron ganas de aprender pero lo que no justifico es que personal que ya sabe ((ustedes)) vengan a juzgar la manera en la que se pregunta aqui... agrego, uno no nace corriendo uno primero gatea luego camina y despues corre. posdata.. caral gracias por toda la ayuda suministrada no se como votar por toda tu ayuda pero me despido de estos foros.. odio que critiquen al que quiere aprender |
y yo que dije?????
|
Hola
Amigo, no te critican, solo te guían. Te cuento: Yo no soy programador ni me dedico a esto, por eso soy el novato del foro. Tienes que saber llevar esto de los foros, es un asunto de aprender que las opiniones no son para molestar la mayoría de las veces es que no se entiende lo que se pregunta y se tiene que responder con otra pregunta. Yo mismo hago muchas veces una broma que otra al no saber de que va la cosa. Cuando conozcas a estas personas veras que ademas de excelentes seres humanos, verdaderos amigos, son lo mejor que hay en esto de la programación. Estas en tu derecho de no volver, pero creo que no sera tu mejor opción. Saludos |
no seas humilde caral... con mas de 6K de mensajes... tienes muy buenos aportes y ese subnick de siempre novato ya esta quedando gastado:D
yo si soy novato jejejeje P.D. Luisraad... que hice???? |
Cita:
En fin, Caral lo ha explicado, si quiere aprender tendrá que esforzarse, no se puede copiar el enunciado de los ejercicios que le han puesto, sea del colegio o sea algo personal. Nosotros resolvemos, o eso intentamos, las dudas de los demás, yo mismo he puesto hoy una pregunta de algo simple, pero que no he sido capaz de conseguir. Pero, tal y como dice la guía de estilo, he explicado detalladamente todo, lo que hecho, lo que he probado, lo que he buscado, he puesto mi código para que lo puedan ver, etc. Lo que no se puede pretender, como ya sabemos, es llegar y soltar una pregunta "de libro" y esperar a que te pongan el código para copiar y pegar. Así no se aprende, amigo luisraad, porque por mucho que leas, por mucho que veas cómo lo hacen los demás, por mucho que te expliquen, etc. JAMÁS conseguirás aprender a nadar si no te tiras al agua TÚ. Así que ya sabes, lee nuestra guía de estilo, no tardarás ni 2 minutos. piensa bien la pregunta y... adelante. Aquí nadie está ofendido ni menospreciamos a nadie porque no sepa, ni nos creemos unos "sabiondos", ni somos unos orgullosos, ni nada de eso. Esas cosas las verás en otros foros, pero no aquí. |
Hola
Amigo, no es un asunto de leer la guía de estilo, yo nunca lo he hecho, pero que conste que se donde esta.:D El asunto es, en mi concepto, tratar lo mejor posible, de explicar la duda que se tenga. El problema es que muchos creen que en los foros se responderá a todo, no importa como se explique la duda. Otros creen que en los foros hay maquinas que les harán la tarea. Otros mas creen que en los foros se puede decir lo que se quiera y no se respeta, no la guía, si no la decencia, los buenos modales. A mi parecer luisraad no entra en estos pero le falta tomarse su tiempo para analizar mejor las dudas que tiene. Carácter tenemos todos, malos días también, así que lo mejor es comenzar de nuevo y seguir tratando de aprender que es lo que buscamos todos. Yo recomendaría a luisraad que se tome un cafecito, a mi que me invite un carajillo (para los que saben:D) y que sigamos como siempre, amigos. Saludos |
ok
Bueno, Yo solo queria dejar en claro que mi idea no es copiar y pegar, porque la verdad a mi no me han dejado tarea y mucho menos ((creo)) que he posteado una pregunta de "colegio" y mucho menos pretendí jamás que me adjuntaran archivos para resolver la tarea, soy novato Pero bien novato y por ende es que aveces pregunto mal he visto en otros foros de esta web en donde una persona posteó una pregunta en donde queria que le explciaran todo el manual de SQL y todos le colaboraron no se porque dicen que yo vengo a hacer mis tareas aqui, lo siento pero eso no es así
caral saludos |
ok
entonces pondras tus preguntas? no se los demas pero a mi me gusta leer las preguntas de los demas, y ver si tengo la capacidad (o al menos la idea) de como solucionarlo, y si no la tengo me alimento de las ideas de los demas para resolver una situacion similar bienvenido de nuevo:) |
bueno siguiendo con la cronologia del tema...
me gustaria aprender cuales son los pasos a seguir para hacer consultas en dos tablas diferentes, pero en la misma BD ¿¿me hago entender??, osea sea el ejemplo: BD: INVENTARIO. Tablas: Cliente, Ventas quiero consultar el nombre del cliente y su direccion, sabiendo de que en la tabla cliente hay unos campos que son: cod, nombre, direccion, telefono... pero a su vez quiero conocer que ventas tiene el cliente aun sabiendo que la tabla ventas tiene estos campos: fechaventa, dtalleventa, codventa .mas o menos asi: hasta alli se ((creo que es asi)) me corrigen si me equivoque ((según entiendo, esto me traera a un DBgrid el nombre de los clientes, su direccion de la BD INVENTARIO)) como hago para hacer la consulta en las dos tablas siguiendo el enunciado que mencione arriba ((no es tarea es solo un ejemplo)). aún no se como se consulta de esa manera. aqui en clases dicen que este tema se le denomina consultas dobles saludos |
Hola
Tabla Clientes: Campos: Cod, nombre, direccion, tel etc... Tabla Ventas: Campos: ??? Saludos |
ok
lo primero que debes tener en cuenta, es que en el diseño de las tablas debes colocar algun campo en comun y luego unir las 2 tablas mas o menos asi
|
Cita:
tabla ventas (cod, codigocliente, fechafecha, detalleventa, codventa, etc.) Necesitas un campo en la tabla de ventas para saber a qué cliente pertenece la venta. |
Bueno Explico Un poco Mas:
BD: INVENTARIO tabla cliente Codcliente Nombrecliente direccion telefono tabla ventas codclientes codventa fechaventas totalventa entonces miren la manera en como me explican a mi es asi:
se que hay una forma mas detallada de hacer este tipo de consulta la pregunta es ¿¿¿esta bien asi??? ¬¬ no creoo!!! por favor me dicen que error tengo segun esto me va a traer estos campos ((según)):D |
Hola
Esa consulta te traera todos los datos de los campos de esas dos tablas, esta bien si es lo que necesitas. Saludos |
como dice caral... esa consulta te traera TODOS los datos, si quisieras extraer solo algunos deberias usar condiciones
yo siempre recomiendo usar Joins, a mi parecer es una manera mas ordenada de extraer los datos |
Gracias Caral y Oscar...
Bueno oscar me interesaria que colocaras de la manera en que tu lo harias y la explicaras mejor... es nueva para mi pero me parece mas detallada y mas facil de aplicar... explicame eso y despues yo coloco ejemplos con condiciones.. Gracias |
Cita:
Así vas probando y depurando, cambiando, etc. hasta dar con lo que exactamente necesitas. |
Hola
El join es una condicion, se usa de muchas maneras, pero si no se sabe aveces no trae los datos que se quiere. La consulta que as puesto es muy sencilla, no se necesita un join con solo un where funciona: Saludos |
Cita:
ambas tablas tendrian en comun el tipo de documento y el numero de documento entonces seria mas o menos asi
en este ejemplo dice... sacame todos los documentos, con el detalle de ops productos su cantidad y su precio que sean del dia 15/01/2010 se entiende? |
Aquí tienes un estupendo tutorial SQL, a la izquierda tienes las palabras y a la derecha sale explicando para lo que sirve y ejemplos variados.
|
Hola como estan??
bueno siguiendo el hilo de la consulta ahora veamos si de esta manera esta bien planteada la consulta con condiciones: vamos a suponer que en el campo de direccion de la tabla clientes en la BD tiene unos registros en el campo direccion de las personas que viven en tolu y otros en puebla, ahora quiero que me liste en un DBgrid solo los clientes pertenecientes a tolu ustedes me guian y me dicen si esta malo asi:
me imagino que esto esta bien, espero sus respectivas opniones y correcciones. |
Hola
Yo lo haria asi: Saludos |
Cita:
Gracias por el link,esta bastante bien. Saludos |
Hola
hola Como va todo
Caral con respecto a tu forma de consultar quiero saber o mejor dicho quiero aprender porque no usas una variable 'c' (consulta) en las consultas que realizas tu usas esto ADOquery.SQL.text:=(consulta); y te sale bien... la otra es como trabajar con parametros para consultas de ese tipo, o mejor dicho como se define un parametro para hacerconsultas saludos |
Cita:
|
Hola
No uso una variable por que es repetir código, me da pereza. Uso Text por que me parece mucho mejor que add. con add hay que limpiar la consulta siempre con clear antes, con text NO. Para colocar un parametro simplemente se ponen dos puntos antes del nombre del parametro, asi: :Nombredelparametro Saludos |
Hola
A es un nombre, como podria ser :Caral, o :Pepe, o el que se te antoje, es un nombre, simplemente. Saludos |
Bueno veamos otro tipo de condicion.
esta vez suponemos que en la tabla CLIENTES tenemos registros en el campo NOMBRE. pero resulta que ahora quiero listar los nombres especificando una letra es decir, traigame todos los nombres que empiezen por P, ya he visto lo que es el codigo like aca en clases pero esta explicito de una manera mas o menos asi, en la forma donde estoy diseñando la apicacion se debe insertar un edit y en su propiedad text ponerle la comilla simple ' (ya oscar me explico como hacerlo con quotedstr), y aparte debo insertar otro edit con el simbolo de % y otra comilla simple osea en su popiedad text %' el codigo me queda de la siguiente manera. ((basandome en lo aprendido en clases)) supongamos que el edit1.text es el de la comilla simple, el edit2.text en donde se colocan las letras y el edit3.text el que contiene la comilla y el % según comprendo en el edit2.text al poner una letra en especifico este traera los nombre que empiezen por la letra que coloco en ese espacio, aun sabiendo de que es complicado de esta manera deseo saber como podria solucionar lo del codigo LIKE y cuando tenga esa duda clara aplico tu forma de consultar caral haber si apredi saludos |
Hola
No entiendo como un profesor le dice a sus alumnos que programen así, no lo entiendo. Esto no creo que sea la manera de iniciarse en delphi, no lo creo. Saludos |
Cita:
bueno acabo de ver un foro con lo del tema LIKE y lo que vi fue esto:
lo hize bien??? |
Hola
Depende. Algunas BD lo aceptan otras no. En access es algo diferente: Como ves no uso quotedstr para nada. Osea, si quieres lo usas, si no, no. Hay muchas maneras de hacer las cosas, todo depende del novato que te las explique.:) Saludos |
Cita:
entonces aplicando este tipo de consultas con parametros como quedaria ?? gracias de antemano |
Hola
Me imagino que algo asi: Saludos |
hola
vamos con otra consulta mas compleja dada la situacion tengo una BD llamada biblioteca en dicha BD hay 3 tablas tabla1=suscriptor tabla2=libro tabla3=prestamo en la tabla1 hay los siguientes campos: cod nombre direccion en la tabla2 codlib nombrelib autor descripcion en la tabla3 cod nombre nombrelib cantprest dada la sircustancia la aplicacion caturará los datos del codigo del suscriptor, el codigo del libro o el nombre del libro... estos datos seran guardados en la tabla prestamo supongamos que ya hay registros en las tablas 1 y 2 condicion: cuando el suscrptor haya pedido tres libros el programa arroje un mensaje que diga no puede tener mas prestamos... tengo algo hecho pero no se entiende tengo unos edit donde capturo esa informacion en el edit1 cpturo el codigo, en el edit2 capturo el nombre y en el edit3 el codigo del libro... ((no viene al caso que lo diga pero es para una guia..)) saludos |
aqui hay una muestra pero esta muy enrredada lo que uqiero hacer es mas sensillo
veo que mezclan 2 tablas etc... ((no es tarea, es solo que quiero aprender una forma diferente y mas sensilla)). saludos |
La franja horaria es GMT +2. Ahora son las 05:28:09. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi