Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía publicar
ningún mensaje en dicho foro, pero ahora puedo hacerlo y me guataría que me
ayudasen en mi problema, que no sé resolver:
1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas es
la típica Clientes que contiene datos generales de los clientes y otras tres
tablas más que se llaman CLIDIR, que contiene las direcciones de los
clientes, otra CLIACC, que contiene el historico de las acciones que se van
realizando con los clientes, es decir, si se les llama o se les envía un
fax, etc. y otra llamada CLICONT, que contien los contactos o personas de
dichos clientes, todas estas tablas tienen un campo en común llamado NCoc,
que es el código del cliente, que utilizo para extraer únicamente los datos
de ese cliente en concreto con una senetencia SELECT del estilo:
WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
:lOpen := .F.
:cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
::oSQLCientes:NCOC+"'"
:lOpen := .T.
END WITH
Mi problema es el siguiente:
Cuando la tabla Clientes está filtrada por algún campo en concreto, deseo
que cualquier filtrado posterior de las tablas relacionadas solo afecten a
los registros que cumplan la condicion de filtrado de la tabla de clientes,
es decir, que cuando en una de las tablas hijas ejecute una sentencia SELECT
solo afecten a los registros de la tabla Cliente que tenga mostrados en
pantalla a través de su oSQLTable ( ::oSQLClientes ).
¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
Perdón si no me he explado bien.
Gracias de antemano
Saludos a todos
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Como hacer filtros con distintas tablas en SQLite
-
- Mensajes: 420
- Registrado: Sab Ago 16, 2008 9:06 pm
Como hacer filtros con distintas tablas en SQLite
Ansel,
¿Algo así como...?
"SELECT * FROM clientes
INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
WHERE clientes.codigo_cliente = " + Str( nCodigo )
Saludos
Alf+.
Ansel escribió:
>
> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía publicar
> ningún mensaje en dicho foro, pero ahora puedo hacerlo y me guataría que
> me ayudasen en mi problema, que no sé resolver:
>
> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
> es la típica Clientes que contiene datos generales de los clientes y
> otras tres tablas más que se llaman CLIDIR, que contiene las direcciones
> de los clientes, otra CLIACC, que contiene el historico de las acciones
> que se van realizando con los clientes, es decir, si se les llama o se
> les envía un fax, etc. y otra llamada CLICONT, que contien los contactos
> o personas de dichos clientes, todas estas tablas tienen un campo en
> común llamado NCoc, que es el código del cliente, que utilizo para
> extraer únicamente los datos de ese cliente en concreto con una
> senetencia SELECT del estilo:
>
> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
> :lOpen := .F.
> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
> ::oSQLCientes:NCOC+"'"
> :lOpen := .T.
> END WITH
>
> Mi problema es el siguiente:
>
> Cuando la tabla Clientes está filtrada por algún campo en concreto,
> deseo que cualquier filtrado posterior de las tablas relacionadas solo
> afecten a los registros que cumplan la condicion de filtrado de la tabla
> de clientes, es decir, que cuando en una de las tablas hijas ejecute una
> sentencia SELECT solo afecten a los registros de la tabla Cliente que
> tenga mostrados en pantalla a través de su oSQLTable ( ::oSQLClientes ).
>
> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>
> Perdón si no me he explado bien.
>
> Gracias de antemano
> Saludos a todos
>
>
>
¿Algo así como...?
"SELECT * FROM clientes
INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
WHERE clientes.codigo_cliente = " + Str( nCodigo )
Saludos
Alf+.
Ansel escribió:
>
> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía publicar
> ningún mensaje en dicho foro, pero ahora puedo hacerlo y me guataría que
> me ayudasen en mi problema, que no sé resolver:
>
> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
> es la típica Clientes que contiene datos generales de los clientes y
> otras tres tablas más que se llaman CLIDIR, que contiene las direcciones
> de los clientes, otra CLIACC, que contiene el historico de las acciones
> que se van realizando con los clientes, es decir, si se les llama o se
> les envía un fax, etc. y otra llamada CLICONT, que contien los contactos
> o personas de dichos clientes, todas estas tablas tienen un campo en
> común llamado NCoc, que es el código del cliente, que utilizo para
> extraer únicamente los datos de ese cliente en concreto con una
> senetencia SELECT del estilo:
>
> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
> :lOpen := .F.
> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
> ::oSQLCientes:NCOC+"'"
> :lOpen := .T.
> END WITH
>
> Mi problema es el siguiente:
>
> Cuando la tabla Clientes está filtrada por algún campo en concreto,
> deseo que cualquier filtrado posterior de las tablas relacionadas solo
> afecten a los registros que cumplan la condicion de filtrado de la tabla
> de clientes, es decir, que cuando en una de las tablas hijas ejecute una
> sentencia SELECT solo afecten a los registros de la tabla Cliente que
> tenga mostrados en pantalla a través de su oSQLTable ( ::oSQLClientes ).
>
> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>
> Perdón si no me he explado bien.
>
> Gracias de antemano
> Saludos a todos
>
>
>
Como hacer filtros con distintas tablas en SQLite
> Gracias por tu respuesta José Alfonso, pero no es lo que busco, intentaré
> explicarme mejor, a ver si lo consigo.
>
> Tengo un oSQLQuery que contiene los datos de los clientes pertenecientes a
> un determinado usuario de la aplicación, ya que cuando se entra en ella,
> el usuario ingresa su nombre y contraseña y ejecuto lo siguiente :
>
> ::cSQL := "SELECT * FROM CLIENTES WHERE CMAN = '" + AppData:cUsuario + "'
> ORDER BY NCOC ASC"
>
> WITH OBJECT ::oSQLClientes // Es del
> tipo oSQLQuery
> :oDataSource := Application:oMainForm:oSQLDatos // Es el Datasource
> de la aplicación
> :cSelect := ::cSQL // Ejecuta el query
> :lOpen := .T.
> END WITH
>
> En ese instatante muestro dentro de un browse el resultado del query del
> usuario que ha entrado en la aplicación para que solo puede ver /
> modificar y eliminar sus propios registros, no tiene acceso o no ve los
> clientes de otro usuario.
>
> Ahora, el usuario desea ver cuantos clientes tiene en la provincia de
> "Guadalajara" ( por ejemplo ), el campo <provincia> está en otra tabla
> llamada CLIDIR, y es ahí donde me atasco, ya que necesito mostrar en un
> browse los clientes que tiene en dicha provincia y que solo le pertenecen
> a él y no todos los clientes que hay en "Guadalajara".
>
> Gracias de antemano
>
>
> ----- Original Message -----
> From: "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com>
> Newsgroups: local.xailer.spanish
> Sent: Tuesday, June 16, 2009 5:52 PM
> Subject: Re: Como hacer filtros con distintas tablas en SQLite
>
>
>> Ansel,
>>
>> ¿Algo así como...?
>>
>> "SELECT * FROM clientes
>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>
>>
>> Saludos
>>
>> Alf+.
>>
>>
>> Ansel escribió:
>>>
>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía publicar
>>> ningún mensaje en dicho foro, pero ahora puedo hacerlo y me guataría que
>>> me ayudasen en mi problema, que no sé resolver:
>>>
>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
>>> es la típica Clientes que contiene datos generales de los clientes y
>>> otras tres tablas más que se llaman CLIDIR, que contiene las direcciones
>>> de los clientes, otra CLIACC, que contiene el historico de las acciones
>>> que se van realizando con los clientes, es decir, si se les llama o se
>>> les envía un fax, etc. y otra llamada CLICONT, que contien los contactos
>>> o personas de dichos clientes, todas estas tablas tienen un campo en
>>> común llamado NCoc, que es el código del cliente, que utilizo para
>>> extraer únicamente los datos de ese cliente en concreto con una
>>> senetencia SELECT del estilo:
>>>
>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>> :lOpen := .F.
>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>> ::oSQLCientes:NCOC+"'"
>>> :lOpen := .T.
>>> END WITH
>>>
>>> Mi problema es el siguiente:
>>>
>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>> deseo que cualquier filtrado posterior de las tablas relacionadas solo
>>> afecten a los registros que cumplan la condicion de filtrado de la tabla
>>> de clientes, es decir, que cuando en una de las tablas hijas ejecute una
>>> sentencia SELECT solo afecten a los registros de la tabla Cliente que
>>> tenga mostrados en pantalla a través de su oSQLTable ( ::oSQLClientes ).
>>>
>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>
>>> Perdón si no me he explado bien.
>>>
>>> Gracias de antemano
>>> Saludos a todos
>>>
>>>
"José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
mensaje de noticias news:4a37bfc4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Ansel,
>
> ¿Algo así como...?
>
> "SELECT * FROM clientes
> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>
>
> Saludos
>
> Alf+.
>
>
> Ansel escribió:
>>
>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía publicar
>> ningún mensaje en dicho foro, pero ahora puedo hacerlo y me guataría que
>> me ayudasen en mi problema, que no sé resolver:
>>
>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
>> es la típica Clientes que contiene datos generales de los clientes y
>> otras tres tablas más que se llaman CLIDIR, que contiene las direcciones
>> de los clientes, otra CLIACC, que contiene el historico de las acciones
>> que se van realizando con los clientes, es decir, si se les llama o se
>> les envía un fax, etc. y otra llamada CLICONT, que contien los contactos
>> o personas de dichos clientes, todas estas tablas tienen un campo en
>> común llamado NCoc, que es el código del cliente, que utilizo para
>> extraer únicamente los datos de ese cliente en concreto con una
>> senetencia SELECT del estilo:
>>
>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>> :lOpen := .F.
>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>> ::oSQLCientes:NCOC+"'"
>> :lOpen := .T.
>> END WITH
>>
>> Mi problema es el siguiente:
>>
>> Cuando la tabla Clientes está filtrada por algún campo en concreto, deseo
>> que cualquier filtrado posterior de las tablas relacionadas solo afecten
>> a los registros que cumplan la condicion de filtrado de la tabla de
>> clientes, es decir, que cuando en una de las tablas hijas ejecute una
>> sentencia SELECT solo afecten a los registros de la tabla Cliente que
>> tenga mostrados en pantalla a través de su oSQLTable ( ::oSQLClientes ).
>>
>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>
>> Perdón si no me he explado bien.
>>
>> Gracias de antemano
>> Saludos a todos
>>
>>
> explicarme mejor, a ver si lo consigo.
>
> Tengo un oSQLQuery que contiene los datos de los clientes pertenecientes a
> un determinado usuario de la aplicación, ya que cuando se entra en ella,
> el usuario ingresa su nombre y contraseña y ejecuto lo siguiente :
>
> ::cSQL := "SELECT * FROM CLIENTES WHERE CMAN = '" + AppData:cUsuario + "'
> ORDER BY NCOC ASC"
>
> WITH OBJECT ::oSQLClientes // Es del
> tipo oSQLQuery
> :oDataSource := Application:oMainForm:oSQLDatos // Es el Datasource
> de la aplicación
> :cSelect := ::cSQL // Ejecuta el query
> :lOpen := .T.
> END WITH
>
> En ese instatante muestro dentro de un browse el resultado del query del
> usuario que ha entrado en la aplicación para que solo puede ver /
> modificar y eliminar sus propios registros, no tiene acceso o no ve los
> clientes de otro usuario.
>
> Ahora, el usuario desea ver cuantos clientes tiene en la provincia de
> "Guadalajara" ( por ejemplo ), el campo <provincia> está en otra tabla
> llamada CLIDIR, y es ahí donde me atasco, ya que necesito mostrar en un
> browse los clientes que tiene en dicha provincia y que solo le pertenecen
> a él y no todos los clientes que hay en "Guadalajara".
>
> Gracias de antemano
>
>
> ----- Original Message -----
> From: "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com>
> Newsgroups: local.xailer.spanish
> Sent: Tuesday, June 16, 2009 5:52 PM
> Subject: Re: Como hacer filtros con distintas tablas en SQLite
>
>
>> Ansel,
>>
>> ¿Algo así como...?
>>
>> "SELECT * FROM clientes
>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>
>>
>> Saludos
>>
>> Alf+.
>>
>>
>> Ansel escribió:
>>>
>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía publicar
>>> ningún mensaje en dicho foro, pero ahora puedo hacerlo y me guataría que
>>> me ayudasen en mi problema, que no sé resolver:
>>>
>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
>>> es la típica Clientes que contiene datos generales de los clientes y
>>> otras tres tablas más que se llaman CLIDIR, que contiene las direcciones
>>> de los clientes, otra CLIACC, que contiene el historico de las acciones
>>> que se van realizando con los clientes, es decir, si se les llama o se
>>> les envía un fax, etc. y otra llamada CLICONT, que contien los contactos
>>> o personas de dichos clientes, todas estas tablas tienen un campo en
>>> común llamado NCoc, que es el código del cliente, que utilizo para
>>> extraer únicamente los datos de ese cliente en concreto con una
>>> senetencia SELECT del estilo:
>>>
>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>> :lOpen := .F.
>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>> ::oSQLCientes:NCOC+"'"
>>> :lOpen := .T.
>>> END WITH
>>>
>>> Mi problema es el siguiente:
>>>
>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>> deseo que cualquier filtrado posterior de las tablas relacionadas solo
>>> afecten a los registros que cumplan la condicion de filtrado de la tabla
>>> de clientes, es decir, que cuando en una de las tablas hijas ejecute una
>>> sentencia SELECT solo afecten a los registros de la tabla Cliente que
>>> tenga mostrados en pantalla a través de su oSQLTable ( ::oSQLClientes ).
>>>
>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>
>>> Perdón si no me he explado bien.
>>>
>>> Gracias de antemano
>>> Saludos a todos
>>>
>>>
"José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
mensaje de noticias news:4a37bfc4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Ansel,
>
> ¿Algo así como...?
>
> "SELECT * FROM clientes
> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>
>
> Saludos
>
> Alf+.
>
>
> Ansel escribió:
>>
>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía publicar
>> ningún mensaje en dicho foro, pero ahora puedo hacerlo y me guataría que
>> me ayudasen en mi problema, que no sé resolver:
>>
>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
>> es la típica Clientes que contiene datos generales de los clientes y
>> otras tres tablas más que se llaman CLIDIR, que contiene las direcciones
>> de los clientes, otra CLIACC, que contiene el historico de las acciones
>> que se van realizando con los clientes, es decir, si se les llama o se
>> les envía un fax, etc. y otra llamada CLICONT, que contien los contactos
>> o personas de dichos clientes, todas estas tablas tienen un campo en
>> común llamado NCoc, que es el código del cliente, que utilizo para
>> extraer únicamente los datos de ese cliente en concreto con una
>> senetencia SELECT del estilo:
>>
>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>> :lOpen := .F.
>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>> ::oSQLCientes:NCOC+"'"
>> :lOpen := .T.
>> END WITH
>>
>> Mi problema es el siguiente:
>>
>> Cuando la tabla Clientes está filtrada por algún campo en concreto, deseo
>> que cualquier filtrado posterior de las tablas relacionadas solo afecten
>> a los registros que cumplan la condicion de filtrado de la tabla de
>> clientes, es decir, que cuando en una de las tablas hijas ejecute una
>> sentencia SELECT solo afecten a los registros de la tabla Cliente que
>> tenga mostrados en pantalla a través de su oSQLTable ( ::oSQLClientes ).
>>
>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>
>> Perdón si no me he explado bien.
>>
>> Gracias de antemano
>> Saludos a todos
>>
>>
-
- Mensajes: 420
- Registrado: Sab Ago 16, 2008 9:06 pm
Como hacer filtros con distintas tablas en SQLite
Ansel,
¿Que te parece...?
cProvincia := "Guadalajara"
"SELECT * FROM clientes
INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
WHERE clidir.provincia = " + Chr( 34 ) + cProvincia + Chr( 34 )
Saludos,
Alf+.
Ansel escribió:
>
>> Gracias por tu respuesta José Alfonso, pero no es lo que busco, intentaré
>> explicarme mejor, a ver si lo consigo.
>>
>> Tengo un oSQLQuery que contiene los datos de los clientes
>> pertenecientes a un determinado usuario de la aplicación, ya que
>> cuando se entra en ella, el usuario ingresa su nombre y contraseña y
>> ejecuto lo siguiente :
>>
>> ::cSQL := "SELECT * FROM CLIENTES WHERE CMAN = '" + AppData:cUsuario +
>> "' ORDER BY NCOC ASC"
>>
>> WITH OBJECT ::oSQLClientes // Es
>> del tipo oSQLQuery
>> :oDataSource := Application:oMainForm:oSQLDatos // Es el
>> Datasource de la aplicación
>> :cSelect := ::cSQL // Ejecuta el query
>> :lOpen := .T.
>> END WITH
>>
>> En ese instatante muestro dentro de un browse el resultado del query
>> del usuario que ha entrado en la aplicación para que solo puede ver /
>> modificar y eliminar sus propios registros, no tiene acceso o no ve
>> los clientes de otro usuario.
>>
>> Ahora, el usuario desea ver cuantos clientes tiene en la provincia de
>> "Guadalajara" ( por ejemplo ), el campo <provincia> está en otra tabla
>> llamada CLIDIR, y es ahí donde me atasco, ya que necesito mostrar en
>> un browse los clientes que tiene en dicha provincia y que solo le
>> pertenecen a él y no todos los clientes que hay en "Guadalajara".
>>
>> Gracias de antemano
>>
>>
>> ----- Original Message ----- From: "José Alfonso Suárez Moreno"
>> <jasm.quitaesto@tpvsoft.com>
>> Newsgroups: local.xailer.spanish
>> Sent: Tuesday, June 16, 2009 5:52 PM
>> Subject: Re: Como hacer filtros con distintas tablas en SQLite
>>
>>
>>> Ansel,
>>>
>>> ¿Algo así como...?
>>>
>>> "SELECT * FROM clientes
>>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>>
>>>
>>> Saludos
>>>
>>> Alf+.
>>>
>>>
>>> Ansel escribió:
>>>>
>>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>>
>>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de
>>>> ellas es la típica Clientes que contiene datos generales de los
>>>> clientes y otras tres tablas más que se llaman CLIDIR, que contiene
>>>> las direcciones de los clientes, otra CLIACC, que contiene el
>>>> historico de las acciones que se van realizando con los clientes, es
>>>> decir, si se les llama o se les envía un fax, etc. y otra llamada
>>>> CLICONT, que contien los contactos o personas de dichos clientes,
>>>> todas estas tablas tienen un campo en común llamado NCoc, que es el
>>>> código del cliente, que utilizo para extraer únicamente los datos de
>>>> ese cliente en concreto con una senetencia SELECT del estilo:
>>>>
>>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>>> :lOpen := .F.
>>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>>> ::oSQLCientes:NCOC+"'"
>>>> :lOpen := .T.
>>>> END WITH
>>>>
>>>> Mi problema es el siguiente:
>>>>
>>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>>> deseo que cualquier filtrado posterior de las tablas relacionadas
>>>> solo afecten a los registros que cumplan la condicion de filtrado de
>>>> la tabla de clientes, es decir, que cuando en una de las tablas
>>>> hijas ejecute una sentencia SELECT solo afecten a los registros de
>>>> la tabla Cliente que tenga mostrados en pantalla a través de su
>>>> oSQLTable ( ::oSQLClientes ).
>>>>
>>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>>
>>>> Perdón si no me he explado bien.
>>>>
>>>> Gracias de antemano
>>>> Saludos a todos
>>>>
>>>>
>
>
> "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
> mensaje de noticias news:4a37bfc4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Ansel,
>>
>> ¿Algo así como...?
>>
>> "SELECT * FROM clientes
>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>
>>
>> Saludos
>>
>> Alf+.
>>
>>
>> Ansel escribió:
>>>
>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>
>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de
>>> ellas es la típica Clientes que contiene datos generales de los
>>> clientes y otras tres tablas más que se llaman CLIDIR, que contiene
>>> las direcciones de los clientes, otra CLIACC, que contiene el
>>> historico de las acciones que se van realizando con los clientes, es
>>> decir, si se les llama o se les envía un fax, etc. y otra llamada
>>> CLICONT, que contien los contactos o personas de dichos clientes,
>>> todas estas tablas tienen un campo en común llamado NCoc, que es el
>>> código del cliente, que utilizo para extraer únicamente los datos de
>>> ese cliente en concreto con una senetencia SELECT del estilo:
>>>
>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>> :lOpen := .F.
>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>> ::oSQLCientes:NCOC+"'"
>>> :lOpen := .T.
>>> END WITH
>>>
>>> Mi problema es el siguiente:
>>>
>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>> deseo que cualquier filtrado posterior de las tablas relacionadas
>>> solo afecten a los registros que cumplan la condicion de filtrado de
>>> la tabla de clientes, es decir, que cuando en una de las tablas hijas
>>> ejecute una sentencia SELECT solo afecten a los registros de la tabla
>>> Cliente que tenga mostrados en pantalla a través de su oSQLTable (
>>> ::oSQLClientes ).
>>>
>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>
>>> Perdón si no me he explado bien.
>>>
>>> Gracias de antemano
>>> Saludos a todos
>>>
>>>
¿Que te parece...?
cProvincia := "Guadalajara"
"SELECT * FROM clientes
INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
WHERE clidir.provincia = " + Chr( 34 ) + cProvincia + Chr( 34 )
Saludos,
Alf+.
Ansel escribió:
>
>> Gracias por tu respuesta José Alfonso, pero no es lo que busco, intentaré
>> explicarme mejor, a ver si lo consigo.
>>
>> Tengo un oSQLQuery que contiene los datos de los clientes
>> pertenecientes a un determinado usuario de la aplicación, ya que
>> cuando se entra en ella, el usuario ingresa su nombre y contraseña y
>> ejecuto lo siguiente :
>>
>> ::cSQL := "SELECT * FROM CLIENTES WHERE CMAN = '" + AppData:cUsuario +
>> "' ORDER BY NCOC ASC"
>>
>> WITH OBJECT ::oSQLClientes // Es
>> del tipo oSQLQuery
>> :oDataSource := Application:oMainForm:oSQLDatos // Es el
>> Datasource de la aplicación
>> :cSelect := ::cSQL // Ejecuta el query
>> :lOpen := .T.
>> END WITH
>>
>> En ese instatante muestro dentro de un browse el resultado del query
>> del usuario que ha entrado en la aplicación para que solo puede ver /
>> modificar y eliminar sus propios registros, no tiene acceso o no ve
>> los clientes de otro usuario.
>>
>> Ahora, el usuario desea ver cuantos clientes tiene en la provincia de
>> "Guadalajara" ( por ejemplo ), el campo <provincia> está en otra tabla
>> llamada CLIDIR, y es ahí donde me atasco, ya que necesito mostrar en
>> un browse los clientes que tiene en dicha provincia y que solo le
>> pertenecen a él y no todos los clientes que hay en "Guadalajara".
>>
>> Gracias de antemano
>>
>>
>> ----- Original Message ----- From: "José Alfonso Suárez Moreno"
>> <jasm.quitaesto@tpvsoft.com>
>> Newsgroups: local.xailer.spanish
>> Sent: Tuesday, June 16, 2009 5:52 PM
>> Subject: Re: Como hacer filtros con distintas tablas en SQLite
>>
>>
>>> Ansel,
>>>
>>> ¿Algo así como...?
>>>
>>> "SELECT * FROM clientes
>>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>>
>>>
>>> Saludos
>>>
>>> Alf+.
>>>
>>>
>>> Ansel escribió:
>>>>
>>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>>
>>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de
>>>> ellas es la típica Clientes que contiene datos generales de los
>>>> clientes y otras tres tablas más que se llaman CLIDIR, que contiene
>>>> las direcciones de los clientes, otra CLIACC, que contiene el
>>>> historico de las acciones que se van realizando con los clientes, es
>>>> decir, si se les llama o se les envía un fax, etc. y otra llamada
>>>> CLICONT, que contien los contactos o personas de dichos clientes,
>>>> todas estas tablas tienen un campo en común llamado NCoc, que es el
>>>> código del cliente, que utilizo para extraer únicamente los datos de
>>>> ese cliente en concreto con una senetencia SELECT del estilo:
>>>>
>>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>>> :lOpen := .F.
>>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>>> ::oSQLCientes:NCOC+"'"
>>>> :lOpen := .T.
>>>> END WITH
>>>>
>>>> Mi problema es el siguiente:
>>>>
>>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>>> deseo que cualquier filtrado posterior de las tablas relacionadas
>>>> solo afecten a los registros que cumplan la condicion de filtrado de
>>>> la tabla de clientes, es decir, que cuando en una de las tablas
>>>> hijas ejecute una sentencia SELECT solo afecten a los registros de
>>>> la tabla Cliente que tenga mostrados en pantalla a través de su
>>>> oSQLTable ( ::oSQLClientes ).
>>>>
>>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>>
>>>> Perdón si no me he explado bien.
>>>>
>>>> Gracias de antemano
>>>> Saludos a todos
>>>>
>>>>
>
>
> "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
> mensaje de noticias news:4a37bfc4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Ansel,
>>
>> ¿Algo así como...?
>>
>> "SELECT * FROM clientes
>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>
>>
>> Saludos
>>
>> Alf+.
>>
>>
>> Ansel escribió:
>>>
>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>
>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de
>>> ellas es la típica Clientes que contiene datos generales de los
>>> clientes y otras tres tablas más que se llaman CLIDIR, que contiene
>>> las direcciones de los clientes, otra CLIACC, que contiene el
>>> historico de las acciones que se van realizando con los clientes, es
>>> decir, si se les llama o se les envía un fax, etc. y otra llamada
>>> CLICONT, que contien los contactos o personas de dichos clientes,
>>> todas estas tablas tienen un campo en común llamado NCoc, que es el
>>> código del cliente, que utilizo para extraer únicamente los datos de
>>> ese cliente en concreto con una senetencia SELECT del estilo:
>>>
>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>> :lOpen := .F.
>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>> ::oSQLCientes:NCOC+"'"
>>> :lOpen := .T.
>>> END WITH
>>>
>>> Mi problema es el siguiente:
>>>
>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>> deseo que cualquier filtrado posterior de las tablas relacionadas
>>> solo afecten a los registros que cumplan la condicion de filtrado de
>>> la tabla de clientes, es decir, que cuando en una de las tablas hijas
>>> ejecute una sentencia SELECT solo afecten a los registros de la tabla
>>> Cliente que tenga mostrados en pantalla a través de su oSQLTable (
>>> ::oSQLClientes ).
>>>
>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>
>>> Perdón si no me he explado bien.
>>>
>>> Gracias de antemano
>>> Saludos a todos
>>>
>>>
-
- Mensajes: 420
- Registrado: Sab Ago 16, 2008 9:06 pm
Como hacer filtros con distintas tablas en SQLite
Ansel,
¿Que te parece...?
cProvincia := "Guadalajara"
"SELECT * FROM clientes
INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
WHERE clidir.provincia = " + Chr( 34 ) + cProvincia + Chr( 34 ) + " AND
clientes.cman = " + Chr( 34 ) + AppData:cUsuario + Chr( 34 )
Saludos,
Alf+.
Ansel escribió:
>
>> Gracias por tu respuesta José Alfonso, pero no es lo que busco, intentaré
>> explicarme mejor, a ver si lo consigo.
>>
>> Tengo un oSQLQuery que contiene los datos de los clientes
>> pertenecientes a un determinado usuario de la aplicación, ya que
>> cuando se entra en ella, el usuario ingresa su nombre y contraseña y
>> ejecuto lo siguiente :
>>
>> ::cSQL := "SELECT * FROM CLIENTES WHERE CMAN = '" + AppData:cUsuario +
>> "' ORDER BY NCOC ASC"
>>
>> WITH OBJECT ::oSQLClientes // Es
>> del tipo oSQLQuery
>> :oDataSource := Application:oMainForm:oSQLDatos // Es el
>> Datasource de la aplicación
>> :cSelect := ::cSQL // Ejecuta el query
>> :lOpen := .T.
>> END WITH
>>
>> En ese instatante muestro dentro de un browse el resultado del query
>> del usuario que ha entrado en la aplicación para que solo puede ver /
>> modificar y eliminar sus propios registros, no tiene acceso o no ve
>> los clientes de otro usuario.
>>
>> Ahora, el usuario desea ver cuantos clientes tiene en la provincia de
>> "Guadalajara" ( por ejemplo ), el campo <provincia> está en otra tabla
>> llamada CLIDIR, y es ahí donde me atasco, ya que necesito mostrar en
>> un browse los clientes que tiene en dicha provincia y que solo le
>> pertenecen a él y no todos los clientes que hay en "Guadalajara".
>>
>> Gracias de antemano
>>
>>
>> ----- Original Message ----- From: "José Alfonso Suárez Moreno"
>> <jasm.quitaesto@tpvsoft.com>
>> Newsgroups: local.xailer.spanish
>> Sent: Tuesday, June 16, 2009 5:52 PM
>> Subject: Re: Como hacer filtros con distintas tablas en SQLite
>>
>>
>>> Ansel,
>>>
>>> ¿Algo así como...?
>>>
>>> "SELECT * FROM clientes
>>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>>
>>>
>>> Saludos
>>>
>>> Alf+.
>>>
>>>
>>> Ansel escribió:
>>>>
>>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>>
>>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de
>>>> ellas es la típica Clientes que contiene datos generales de los
>>>> clientes y otras tres tablas más que se llaman CLIDIR, que contiene
>>>> las direcciones de los clientes, otra CLIACC, que contiene el
>>>> historico de las acciones que se van realizando con los clientes, es
>>>> decir, si se les llama o se les envía un fax, etc. y otra llamada
>>>> CLICONT, que contien los contactos o personas de dichos clientes,
>>>> todas estas tablas tienen un campo en común llamado NCoc, que es el
>>>> código del cliente, que utilizo para extraer únicamente los datos de
>>>> ese cliente en concreto con una senetencia SELECT del estilo:
>>>>
>>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>>> :lOpen := .F.
>>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>>> ::oSQLCientes:NCOC+"'"
>>>> :lOpen := .T.
>>>> END WITH
>>>>
>>>> Mi problema es el siguiente:
>>>>
>>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>>> deseo que cualquier filtrado posterior de las tablas relacionadas
>>>> solo afecten a los registros que cumplan la condicion de filtrado de
>>>> la tabla de clientes, es decir, que cuando en una de las tablas
>>>> hijas ejecute una sentencia SELECT solo afecten a los registros de
>>>> la tabla Cliente que tenga mostrados en pantalla a través de su
>>>> oSQLTable ( ::oSQLClientes ).
>>>>
>>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>>
>>>> Perdón si no me he explado bien.
>>>>
>>>> Gracias de antemano
>>>> Saludos a todos
>>>>
>>>>
>
>
> "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
> mensaje de noticias news:4a37bfc4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Ansel,
>>
>> ¿Algo así como...?
>>
>> "SELECT * FROM clientes
>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>
>>
>> Saludos
>>
>> Alf+.
>>
>>
>> Ansel escribió:
>>>
>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>
>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de
>>> ellas es la típica Clientes que contiene datos generales de los
>>> clientes y otras tres tablas más que se llaman CLIDIR, que contiene
>>> las direcciones de los clientes, otra CLIACC, que contiene el
>>> historico de las acciones que se van realizando con los clientes, es
>>> decir, si se les llama o se les envía un fax, etc. y otra llamada
>>> CLICONT, que contien los contactos o personas de dichos clientes,
>>> todas estas tablas tienen un campo en común llamado NCoc, que es el
>>> código del cliente, que utilizo para extraer únicamente los datos de
>>> ese cliente en concreto con una senetencia SELECT del estilo:
>>>
>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>> :lOpen := .F.
>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>> ::oSQLCientes:NCOC+"'"
>>> :lOpen := .T.
>>> END WITH
>>>
>>> Mi problema es el siguiente:
>>>
>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>> deseo que cualquier filtrado posterior de las tablas relacionadas
>>> solo afecten a los registros que cumplan la condicion de filtrado de
>>> la tabla de clientes, es decir, que cuando en una de las tablas hijas
>>> ejecute una sentencia SELECT solo afecten a los registros de la tabla
>>> Cliente que tenga mostrados en pantalla a través de su oSQLTable (
>>> ::oSQLClientes ).
>>>
>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>
>>> Perdón si no me he explado bien.
>>>
>>> Gracias de antemano
>>> Saludos a todos
>>>
>>>
¿Que te parece...?
cProvincia := "Guadalajara"
"SELECT * FROM clientes
INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
WHERE clidir.provincia = " + Chr( 34 ) + cProvincia + Chr( 34 ) + " AND
clientes.cman = " + Chr( 34 ) + AppData:cUsuario + Chr( 34 )
Saludos,
Alf+.
Ansel escribió:
>
>> Gracias por tu respuesta José Alfonso, pero no es lo que busco, intentaré
>> explicarme mejor, a ver si lo consigo.
>>
>> Tengo un oSQLQuery que contiene los datos de los clientes
>> pertenecientes a un determinado usuario de la aplicación, ya que
>> cuando se entra en ella, el usuario ingresa su nombre y contraseña y
>> ejecuto lo siguiente :
>>
>> ::cSQL := "SELECT * FROM CLIENTES WHERE CMAN = '" + AppData:cUsuario +
>> "' ORDER BY NCOC ASC"
>>
>> WITH OBJECT ::oSQLClientes // Es
>> del tipo oSQLQuery
>> :oDataSource := Application:oMainForm:oSQLDatos // Es el
>> Datasource de la aplicación
>> :cSelect := ::cSQL // Ejecuta el query
>> :lOpen := .T.
>> END WITH
>>
>> En ese instatante muestro dentro de un browse el resultado del query
>> del usuario que ha entrado en la aplicación para que solo puede ver /
>> modificar y eliminar sus propios registros, no tiene acceso o no ve
>> los clientes de otro usuario.
>>
>> Ahora, el usuario desea ver cuantos clientes tiene en la provincia de
>> "Guadalajara" ( por ejemplo ), el campo <provincia> está en otra tabla
>> llamada CLIDIR, y es ahí donde me atasco, ya que necesito mostrar en
>> un browse los clientes que tiene en dicha provincia y que solo le
>> pertenecen a él y no todos los clientes que hay en "Guadalajara".
>>
>> Gracias de antemano
>>
>>
>> ----- Original Message ----- From: "José Alfonso Suárez Moreno"
>> <jasm.quitaesto@tpvsoft.com>
>> Newsgroups: local.xailer.spanish
>> Sent: Tuesday, June 16, 2009 5:52 PM
>> Subject: Re: Como hacer filtros con distintas tablas en SQLite
>>
>>
>>> Ansel,
>>>
>>> ¿Algo así como...?
>>>
>>> "SELECT * FROM clientes
>>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>>
>>>
>>> Saludos
>>>
>>> Alf+.
>>>
>>>
>>> Ansel escribió:
>>>>
>>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>>
>>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de
>>>> ellas es la típica Clientes que contiene datos generales de los
>>>> clientes y otras tres tablas más que se llaman CLIDIR, que contiene
>>>> las direcciones de los clientes, otra CLIACC, que contiene el
>>>> historico de las acciones que se van realizando con los clientes, es
>>>> decir, si se les llama o se les envía un fax, etc. y otra llamada
>>>> CLICONT, que contien los contactos o personas de dichos clientes,
>>>> todas estas tablas tienen un campo en común llamado NCoc, que es el
>>>> código del cliente, que utilizo para extraer únicamente los datos de
>>>> ese cliente en concreto con una senetencia SELECT del estilo:
>>>>
>>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>>> :lOpen := .F.
>>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>>> ::oSQLCientes:NCOC+"'"
>>>> :lOpen := .T.
>>>> END WITH
>>>>
>>>> Mi problema es el siguiente:
>>>>
>>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>>> deseo que cualquier filtrado posterior de las tablas relacionadas
>>>> solo afecten a los registros que cumplan la condicion de filtrado de
>>>> la tabla de clientes, es decir, que cuando en una de las tablas
>>>> hijas ejecute una sentencia SELECT solo afecten a los registros de
>>>> la tabla Cliente que tenga mostrados en pantalla a través de su
>>>> oSQLTable ( ::oSQLClientes ).
>>>>
>>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>>
>>>> Perdón si no me he explado bien.
>>>>
>>>> Gracias de antemano
>>>> Saludos a todos
>>>>
>>>>
>
>
> "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
> mensaje de noticias news:4a37bfc4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Ansel,
>>
>> ¿Algo así como...?
>>
>> "SELECT * FROM clientes
>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>
>>
>> Saludos
>>
>> Alf+.
>>
>>
>> Ansel escribió:
>>>
>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>
>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de
>>> ellas es la típica Clientes que contiene datos generales de los
>>> clientes y otras tres tablas más que se llaman CLIDIR, que contiene
>>> las direcciones de los clientes, otra CLIACC, que contiene el
>>> historico de las acciones que se van realizando con los clientes, es
>>> decir, si se les llama o se les envía un fax, etc. y otra llamada
>>> CLICONT, que contien los contactos o personas de dichos clientes,
>>> todas estas tablas tienen un campo en común llamado NCoc, que es el
>>> código del cliente, que utilizo para extraer únicamente los datos de
>>> ese cliente en concreto con una senetencia SELECT del estilo:
>>>
>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>> :lOpen := .F.
>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>> ::oSQLCientes:NCOC+"'"
>>> :lOpen := .T.
>>> END WITH
>>>
>>> Mi problema es el siguiente:
>>>
>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>> deseo que cualquier filtrado posterior de las tablas relacionadas
>>> solo afecten a los registros que cumplan la condicion de filtrado de
>>> la tabla de clientes, es decir, que cuando en una de las tablas hijas
>>> ejecute una sentencia SELECT solo afecten a los registros de la tabla
>>> Cliente que tenga mostrados en pantalla a través de su oSQLTable (
>>> ::oSQLClientes ).
>>>
>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>
>>> Perdón si no me he explado bien.
>>>
>>> Gracias de antemano
>>> Saludos a todos
>>>
>>>
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Como hacer filtros con distintas tablas en SQLite
Ansel
Entonces por que no agregas a la busqueda tambien la condicion del nombre
del usuario en clientes y provincia en clidir.
Quedaria asi
SELECT * FROM clientes,
INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente and
clidir.provincia="Guadalajara"
INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
WHERE clientes.CMAN = '" + AppData:cUsuario + "' and clientes.codigo_cliente
= " + Str( nCodigo )
Probalo, a ver si te sirve
Juan
"Ansel" <anselmogomez2@hotmail.com> escribió en el mensaje
news:4a38c932$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
>> Gracias por tu respuesta José Alfonso, pero no es lo que busco, intentaré
>> explicarme mejor, a ver si lo consigo.
>>
>> Tengo un oSQLQuery que contiene los datos de los clientes pertenecientes
>> a un determinado usuario de la aplicación, ya que cuando se entra en
>> ella, el usuario ingresa su nombre y contraseña y ejecuto lo siguiente :
>>
>> ::cSQL := "SELECT * FROM CLIENTES WHERE CMAN = '" + AppData:cUsuario + "'
>> ORDER BY NCOC ASC"
>>
>> WITH OBJECT ::oSQLClientes // Es del
>> tipo oSQLQuery
>> :oDataSource := Application:oMainForm:oSQLDatos // Es el Datasource
>> de la aplicación
>> :cSelect := ::cSQL // Ejecuta el query
>> :lOpen := .T.
>> END WITH
>>
>> En ese instatante muestro dentro de un browse el resultado del query del
>> usuario que ha entrado en la aplicación para que solo puede ver /
>> modificar y eliminar sus propios registros, no tiene acceso o no ve los
>> clientes de otro usuario.
>>
>> Ahora, el usuario desea ver cuantos clientes tiene en la provincia de
>> "Guadalajara" ( por ejemplo ), el campo <provincia> está en otra tabla
>> llamada CLIDIR, y es ahí donde me atasco, ya que necesito mostrar en un
>> browse los clientes que tiene en dicha provincia y que solo le pertenecen
>> a él y no todos los clientes que hay en "Guadalajara".
>>
>> Gracias de antemano
>>
>>
>> ----- Original Message -----
>> From: "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com>
>> Newsgroups: local.xailer.spanish
>> Sent: Tuesday, June 16, 2009 5:52 PM
>> Subject: Re: Como hacer filtros con distintas tablas en SQLite
>>
>>
>>> Ansel,
>>>
>>> ¿Algo así como...?
>>>
>>> "SELECT * FROM clientes
>>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>>
>>>
>>> Saludos
>>>
>>> Alf+.
>>>
>>>
>>> Ansel escribió:
>>>>
>>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>>
>>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
>>>> es la típica Clientes que contiene datos generales de los clientes y
>>>> otras tres tablas más que se llaman CLIDIR, que contiene las
>>>> direcciones de los clientes, otra CLIACC, que contiene el historico de
>>>> las acciones que se van realizando con los clientes, es decir, si se
>>>> les llama o se les envía un fax, etc. y otra llamada CLICONT, que
>>>> contien los contactos o personas de dichos clientes, todas estas tablas
>>>> tienen un campo en común llamado NCoc, que es el código del cliente,
>>>> que utilizo para extraer únicamente los datos de ese cliente en
>>>> concreto con una senetencia SELECT del estilo:
>>>>
>>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>>> :lOpen := .F.
>>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>>> ::oSQLCientes:NCOC+"'"
>>>> :lOpen := .T.
>>>> END WITH
>>>>
>>>> Mi problema es el siguiente:
>>>>
>>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>>> deseo que cualquier filtrado posterior de las tablas relacionadas solo
>>>> afecten a los registros que cumplan la condicion de filtrado de la
>>>> tabla de clientes, es decir, que cuando en una de las tablas hijas
>>>> ejecute una sentencia SELECT solo afecten a los registros de la tabla
>>>> Cliente que tenga mostrados en pantalla a través de su oSQLTable (
>>>> ::oSQLClientes ).
>>>>
>>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>>
>>>> Perdón si no me he explado bien.
>>>>
>>>> Gracias de antemano
>>>> Saludos a todos
>>>>
>>>>
>
>
> "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
> mensaje de noticias news:4a37bfc4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Ansel,
>>
>> ¿Algo así como...?
>>
>> "SELECT * FROM clientes
>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>
>>
>> Saludos
>>
>> Alf+.
>>
>>
>> Ansel escribió:
>>>
>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía publicar
>>> ningún mensaje en dicho foro, pero ahora puedo hacerlo y me guataría que
>>> me ayudasen en mi problema, que no sé resolver:
>>>
>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
>>> es la típica Clientes que contiene datos generales de los clientes y
>>> otras tres tablas más que se llaman CLIDIR, que contiene las direcciones
>>> de los clientes, otra CLIACC, que contiene el historico de las acciones
>>> que se van realizando con los clientes, es decir, si se les llama o se
>>> les envía un fax, etc. y otra llamada CLICONT, que contien los contactos
>>> o personas de dichos clientes, todas estas tablas tienen un campo en
>>> común llamado NCoc, que es el código del cliente, que utilizo para
>>> extraer únicamente los datos de ese cliente en concreto con una
>>> senetencia SELECT del estilo:
>>>
>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>> :lOpen := .F.
>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>> ::oSQLCientes:NCOC+"'"
>>> :lOpen := .T.
>>> END WITH
>>>
>>> Mi problema es el siguiente:
>>>
>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>> deseo que cualquier filtrado posterior de las tablas relacionadas solo
>>> afecten a los registros que cumplan la condicion de filtrado de la tabla
>>> de clientes, es decir, que cuando en una de las tablas hijas ejecute una
>>> sentencia SELECT solo afecten a los registros de la tabla Cliente que
>>> tenga mostrados en pantalla a través de su oSQLTable ( ::oSQLClientes ).
>>>
>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>
>>> Perdón si no me he explado bien.
>>>
>>> Gracias de antemano
>>> Saludos a todos
>>>
>>>
Entonces por que no agregas a la busqueda tambien la condicion del nombre
del usuario en clientes y provincia en clidir.
Quedaria asi
SELECT * FROM clientes,
INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente and
clidir.provincia="Guadalajara"
INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
WHERE clientes.CMAN = '" + AppData:cUsuario + "' and clientes.codigo_cliente
= " + Str( nCodigo )
Probalo, a ver si te sirve
Juan
"Ansel" <anselmogomez2@hotmail.com> escribió en el mensaje
news:4a38c932$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
>> Gracias por tu respuesta José Alfonso, pero no es lo que busco, intentaré
>> explicarme mejor, a ver si lo consigo.
>>
>> Tengo un oSQLQuery que contiene los datos de los clientes pertenecientes
>> a un determinado usuario de la aplicación, ya que cuando se entra en
>> ella, el usuario ingresa su nombre y contraseña y ejecuto lo siguiente :
>>
>> ::cSQL := "SELECT * FROM CLIENTES WHERE CMAN = '" + AppData:cUsuario + "'
>> ORDER BY NCOC ASC"
>>
>> WITH OBJECT ::oSQLClientes // Es del
>> tipo oSQLQuery
>> :oDataSource := Application:oMainForm:oSQLDatos // Es el Datasource
>> de la aplicación
>> :cSelect := ::cSQL // Ejecuta el query
>> :lOpen := .T.
>> END WITH
>>
>> En ese instatante muestro dentro de un browse el resultado del query del
>> usuario que ha entrado en la aplicación para que solo puede ver /
>> modificar y eliminar sus propios registros, no tiene acceso o no ve los
>> clientes de otro usuario.
>>
>> Ahora, el usuario desea ver cuantos clientes tiene en la provincia de
>> "Guadalajara" ( por ejemplo ), el campo <provincia> está en otra tabla
>> llamada CLIDIR, y es ahí donde me atasco, ya que necesito mostrar en un
>> browse los clientes que tiene en dicha provincia y que solo le pertenecen
>> a él y no todos los clientes que hay en "Guadalajara".
>>
>> Gracias de antemano
>>
>>
>> ----- Original Message -----
>> From: "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com>
>> Newsgroups: local.xailer.spanish
>> Sent: Tuesday, June 16, 2009 5:52 PM
>> Subject: Re: Como hacer filtros con distintas tablas en SQLite
>>
>>
>>> Ansel,
>>>
>>> ¿Algo así como...?
>>>
>>> "SELECT * FROM clientes
>>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>>
>>>
>>> Saludos
>>>
>>> Alf+.
>>>
>>>
>>> Ansel escribió:
>>>>
>>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>>
>>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
>>>> es la típica Clientes que contiene datos generales de los clientes y
>>>> otras tres tablas más que se llaman CLIDIR, que contiene las
>>>> direcciones de los clientes, otra CLIACC, que contiene el historico de
>>>> las acciones que se van realizando con los clientes, es decir, si se
>>>> les llama o se les envía un fax, etc. y otra llamada CLICONT, que
>>>> contien los contactos o personas de dichos clientes, todas estas tablas
>>>> tienen un campo en común llamado NCoc, que es el código del cliente,
>>>> que utilizo para extraer únicamente los datos de ese cliente en
>>>> concreto con una senetencia SELECT del estilo:
>>>>
>>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>>> :lOpen := .F.
>>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>>> ::oSQLCientes:NCOC+"'"
>>>> :lOpen := .T.
>>>> END WITH
>>>>
>>>> Mi problema es el siguiente:
>>>>
>>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>>> deseo que cualquier filtrado posterior de las tablas relacionadas solo
>>>> afecten a los registros que cumplan la condicion de filtrado de la
>>>> tabla de clientes, es decir, que cuando en una de las tablas hijas
>>>> ejecute una sentencia SELECT solo afecten a los registros de la tabla
>>>> Cliente que tenga mostrados en pantalla a través de su oSQLTable (
>>>> ::oSQLClientes ).
>>>>
>>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>>
>>>> Perdón si no me he explado bien.
>>>>
>>>> Gracias de antemano
>>>> Saludos a todos
>>>>
>>>>
>
>
> "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
> mensaje de noticias news:4a37bfc4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Ansel,
>>
>> ¿Algo así como...?
>>
>> "SELECT * FROM clientes
>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>
>>
>> Saludos
>>
>> Alf+.
>>
>>
>> Ansel escribió:
>>>
>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía publicar
>>> ningún mensaje en dicho foro, pero ahora puedo hacerlo y me guataría que
>>> me ayudasen en mi problema, que no sé resolver:
>>>
>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
>>> es la típica Clientes que contiene datos generales de los clientes y
>>> otras tres tablas más que se llaman CLIDIR, que contiene las direcciones
>>> de los clientes, otra CLIACC, que contiene el historico de las acciones
>>> que se van realizando con los clientes, es decir, si se les llama o se
>>> les envía un fax, etc. y otra llamada CLICONT, que contien los contactos
>>> o personas de dichos clientes, todas estas tablas tienen un campo en
>>> común llamado NCoc, que es el código del cliente, que utilizo para
>>> extraer únicamente los datos de ese cliente en concreto con una
>>> senetencia SELECT del estilo:
>>>
>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>> :lOpen := .F.
>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>> ::oSQLCientes:NCOC+"'"
>>> :lOpen := .T.
>>> END WITH
>>>
>>> Mi problema es el siguiente:
>>>
>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>> deseo que cualquier filtrado posterior de las tablas relacionadas solo
>>> afecten a los registros que cumplan la condicion de filtrado de la tabla
>>> de clientes, es decir, que cuando en una de las tablas hijas ejecute una
>>> sentencia SELECT solo afecten a los registros de la tabla Cliente que
>>> tenga mostrados en pantalla a través de su oSQLTable ( ::oSQLClientes ).
>>>
>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>
>>> Perdón si no me he explado bien.
>>>
>>> Gracias de antemano
>>> Saludos a todos
>>>
>>>
Como hacer filtros con distintas tablas en SQLite
Gracias a todos por la ayuda presatada, probaré con las instrucciones que me
indicais,
Muchas gracias y espero que funcione.
"José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
mensaje de noticias news:4a38cdb5$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Ansel,
>
> ¿Que te parece...?
>
> cProvincia := "Guadalajara"
>
> "SELECT * FROM clientes
> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
> WHERE clidir.provincia = " + Chr( 34 ) + cProvincia + Chr( 34 )
>
> Saludos,
>
> Alf+.
>
>
> Ansel escribió:
>>
>>> Gracias por tu respuesta José Alfonso, pero no es lo que busco,
>>> intentaré
>>> explicarme mejor, a ver si lo consigo.
>>>
>>> Tengo un oSQLQuery que contiene los datos de los clientes pertenecientes
>>> a un determinado usuario de la aplicación, ya que cuando se entra en
>>> ella, el usuario ingresa su nombre y contraseña y ejecuto lo siguiente :
>>>
>>> ::cSQL := "SELECT * FROM CLIENTES WHERE CMAN = '" + AppData:cUsuario +
>>> "' ORDER BY NCOC ASC"
>>>
>>> WITH OBJECT ::oSQLClientes // Es
>>> del tipo oSQLQuery
>>> :oDataSource := Application:oMainForm:oSQLDatos // Es el Datasource
>>> de la aplicación
>>> :cSelect := ::cSQL // Ejecuta el query
>>> :lOpen := .T.
>>> END WITH
>>>
>>> En ese instatante muestro dentro de un browse el resultado del query del
>>> usuario que ha entrado en la aplicación para que solo puede ver /
>>> modificar y eliminar sus propios registros, no tiene acceso o no ve los
>>> clientes de otro usuario.
>>>
>>> Ahora, el usuario desea ver cuantos clientes tiene en la provincia de
>>> "Guadalajara" ( por ejemplo ), el campo <provincia> está en otra tabla
>>> llamada CLIDIR, y es ahí donde me atasco, ya que necesito mostrar en un
>>> browse los clientes que tiene en dicha provincia y que solo le
>>> pertenecen a él y no todos los clientes que hay en "Guadalajara".
>>>
>>> Gracias de antemano
>>>
>>>
>>> ----- Original Message ----- From: "José Alfonso Suárez Moreno"
>>> <jasm.quitaesto@tpvsoft.com>
>>> Newsgroups: local.xailer.spanish
>>> Sent: Tuesday, June 16, 2009 5:52 PM
>>> Subject: Re: Como hacer filtros con distintas tablas en SQLite
>>>
>>>
>>>> Ansel,
>>>>
>>>> ¿Algo así como...?
>>>>
>>>> "SELECT * FROM clientes
>>>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>>>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>>>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>>>
>>>>
>>>> Saludos
>>>>
>>>> Alf+.
>>>>
>>>>
>>>> Ansel escribió:
>>>>>
>>>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>>>
>>>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de
>>>>> ellas es la típica Clientes que contiene datos generales de los
>>>>> clientes y otras tres tablas más que se llaman CLIDIR, que contiene
>>>>> las direcciones de los clientes, otra CLIACC, que contiene el
>>>>> historico de las acciones que se van realizando con los clientes, es
>>>>> decir, si se les llama o se les envía un fax, etc. y otra llamada
>>>>> CLICONT, que contien los contactos o personas de dichos clientes,
>>>>> todas estas tablas tienen un campo en común llamado NCoc, que es el
>>>>> código del cliente, que utilizo para extraer únicamente los datos de
>>>>> ese cliente en concreto con una senetencia SELECT del estilo:
>>>>>
>>>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>>>> :lOpen := .F.
>>>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>>>> ::oSQLCientes:NCOC+"'"
>>>>> :lOpen := .T.
>>>>> END WITH
>>>>>
>>>>> Mi problema es el siguiente:
>>>>>
>>>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>>>> deseo que cualquier filtrado posterior de las tablas relacionadas solo
>>>>> afecten a los registros que cumplan la condicion de filtrado de la
>>>>> tabla de clientes, es decir, que cuando en una de las tablas hijas
>>>>> ejecute una sentencia SELECT solo afecten a los registros de la tabla
>>>>> Cliente que tenga mostrados en pantalla a través de su oSQLTable (
>>>>> ::oSQLClientes ).
>>>>>
>>>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>>>
>>>>> Perdón si no me he explado bien.
>>>>>
>>>>> Gracias de antemano
>>>>> Saludos a todos
>>>>>
>>>>>
>>
>>
>> "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
>> mensaje de noticias news:4a37bfc4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> Ansel,
>>>
>>> ¿Algo así como...?
>>>
>>> "SELECT * FROM clientes
>>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>>
>>>
>>> Saludos
>>>
>>> Alf+.
>>>
>>>
>>> Ansel escribió:
>>>>
>>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>>
>>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
>>>> es la típica Clientes que contiene datos generales de los clientes y
>>>> otras tres tablas más que se llaman CLIDIR, que contiene las
>>>> direcciones de los clientes, otra CLIACC, que contiene el historico de
>>>> las acciones que se van realizando con los clientes, es decir, si se
>>>> les llama o se les envía un fax, etc. y otra llamada CLICONT, que
>>>> contien los contactos o personas de dichos clientes, todas estas tablas
>>>> tienen un campo en común llamado NCoc, que es el código del cliente,
>>>> que utilizo para extraer únicamente los datos de ese cliente en
>>>> concreto con una senetencia SELECT del estilo:
>>>>
>>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>>> :lOpen := .F.
>>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>>> ::oSQLCientes:NCOC+"'"
>>>> :lOpen := .T.
>>>> END WITH
>>>>
>>>> Mi problema es el siguiente:
>>>>
>>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>>> deseo que cualquier filtrado posterior de las tablas relacionadas solo
>>>> afecten a los registros que cumplan la condicion de filtrado de la
>>>> tabla de clientes, es decir, que cuando en una de las tablas hijas
>>>> ejecute una sentencia SELECT solo afecten a los registros de la tabla
>>>> Cliente que tenga mostrados en pantalla a través de su oSQLTable (
>>>> ::oSQLClientes ).
>>>>
>>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>>
>>>> Perdón si no me he explado bien.
>>>>
>>>> Gracias de antemano
>>>> Saludos a todos
>>>>
>>>>
indicais,
Muchas gracias y espero que funcione.
"José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
mensaje de noticias news:4a38cdb5$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Ansel,
>
> ¿Que te parece...?
>
> cProvincia := "Guadalajara"
>
> "SELECT * FROM clientes
> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
> WHERE clidir.provincia = " + Chr( 34 ) + cProvincia + Chr( 34 )
>
> Saludos,
>
> Alf+.
>
>
> Ansel escribió:
>>
>>> Gracias por tu respuesta José Alfonso, pero no es lo que busco,
>>> intentaré
>>> explicarme mejor, a ver si lo consigo.
>>>
>>> Tengo un oSQLQuery que contiene los datos de los clientes pertenecientes
>>> a un determinado usuario de la aplicación, ya que cuando se entra en
>>> ella, el usuario ingresa su nombre y contraseña y ejecuto lo siguiente :
>>>
>>> ::cSQL := "SELECT * FROM CLIENTES WHERE CMAN = '" + AppData:cUsuario +
>>> "' ORDER BY NCOC ASC"
>>>
>>> WITH OBJECT ::oSQLClientes // Es
>>> del tipo oSQLQuery
>>> :oDataSource := Application:oMainForm:oSQLDatos // Es el Datasource
>>> de la aplicación
>>> :cSelect := ::cSQL // Ejecuta el query
>>> :lOpen := .T.
>>> END WITH
>>>
>>> En ese instatante muestro dentro de un browse el resultado del query del
>>> usuario que ha entrado en la aplicación para que solo puede ver /
>>> modificar y eliminar sus propios registros, no tiene acceso o no ve los
>>> clientes de otro usuario.
>>>
>>> Ahora, el usuario desea ver cuantos clientes tiene en la provincia de
>>> "Guadalajara" ( por ejemplo ), el campo <provincia> está en otra tabla
>>> llamada CLIDIR, y es ahí donde me atasco, ya que necesito mostrar en un
>>> browse los clientes que tiene en dicha provincia y que solo le
>>> pertenecen a él y no todos los clientes que hay en "Guadalajara".
>>>
>>> Gracias de antemano
>>>
>>>
>>> ----- Original Message ----- From: "José Alfonso Suárez Moreno"
>>> <jasm.quitaesto@tpvsoft.com>
>>> Newsgroups: local.xailer.spanish
>>> Sent: Tuesday, June 16, 2009 5:52 PM
>>> Subject: Re: Como hacer filtros con distintas tablas en SQLite
>>>
>>>
>>>> Ansel,
>>>>
>>>> ¿Algo así como...?
>>>>
>>>> "SELECT * FROM clientes
>>>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>>>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>>>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>>>
>>>>
>>>> Saludos
>>>>
>>>> Alf+.
>>>>
>>>>
>>>> Ansel escribió:
>>>>>
>>>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>>>
>>>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de
>>>>> ellas es la típica Clientes que contiene datos generales de los
>>>>> clientes y otras tres tablas más que se llaman CLIDIR, que contiene
>>>>> las direcciones de los clientes, otra CLIACC, que contiene el
>>>>> historico de las acciones que se van realizando con los clientes, es
>>>>> decir, si se les llama o se les envía un fax, etc. y otra llamada
>>>>> CLICONT, que contien los contactos o personas de dichos clientes,
>>>>> todas estas tablas tienen un campo en común llamado NCoc, que es el
>>>>> código del cliente, que utilizo para extraer únicamente los datos de
>>>>> ese cliente en concreto con una senetencia SELECT del estilo:
>>>>>
>>>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>>>> :lOpen := .F.
>>>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>>>> ::oSQLCientes:NCOC+"'"
>>>>> :lOpen := .T.
>>>>> END WITH
>>>>>
>>>>> Mi problema es el siguiente:
>>>>>
>>>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>>>> deseo que cualquier filtrado posterior de las tablas relacionadas solo
>>>>> afecten a los registros que cumplan la condicion de filtrado de la
>>>>> tabla de clientes, es decir, que cuando en una de las tablas hijas
>>>>> ejecute una sentencia SELECT solo afecten a los registros de la tabla
>>>>> Cliente que tenga mostrados en pantalla a través de su oSQLTable (
>>>>> ::oSQLClientes ).
>>>>>
>>>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>>>
>>>>> Perdón si no me he explado bien.
>>>>>
>>>>> Gracias de antemano
>>>>> Saludos a todos
>>>>>
>>>>>
>>
>>
>> "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
>> mensaje de noticias news:4a37bfc4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> Ansel,
>>>
>>> ¿Algo así como...?
>>>
>>> "SELECT * FROM clientes
>>> INNER JOIN clidir ON clidir.codigo_cliente = clientes.codigo_cliente
>>> INNER JOIN cliacc ON cliacc.codigo_cliente = clientes.codigo_cliente
>>> WHERE clientes.codigo_cliente = " + Str( nCodigo )
>>>
>>>
>>> Saludos
>>>
>>> Alf+.
>>>
>>>
>>> Ansel escribió:
>>>>
>>>> Hola a todos, soy nuevo en el foro, ya que hasta ahora no podía
>>>> publicar ningún mensaje en dicho foro, pero ahora puedo hacerlo y me
>>>> guataría que me ayudasen en mi problema, que no sé resolver:
>>>>
>>>> 1º Tengo una base de datos en SQLite con múltiples tablas, una de ellas
>>>> es la típica Clientes que contiene datos generales de los clientes y
>>>> otras tres tablas más que se llaman CLIDIR, que contiene las
>>>> direcciones de los clientes, otra CLIACC, que contiene el historico de
>>>> las acciones que se van realizando con los clientes, es decir, si se
>>>> les llama o se les envía un fax, etc. y otra llamada CLICONT, que
>>>> contien los contactos o personas de dichos clientes, todas estas tablas
>>>> tienen un campo en común llamado NCoc, que es el código del cliente,
>>>> que utilizo para extraer únicamente los datos de ese cliente en
>>>> concreto con una senetencia SELECT del estilo:
>>>>
>>>> WITH OBJECT ::oSQLAcciones // Es una objeto oSQLQuery...........
>>>> :lOpen := .F.
>>>> :cSelect := "SELECT * FROM CLIACC WHERE nCoc='" +
>>>> ::oSQLCientes:NCOC+"'"
>>>> :lOpen := .T.
>>>> END WITH
>>>>
>>>> Mi problema es el siguiente:
>>>>
>>>> Cuando la tabla Clientes está filtrada por algún campo en concreto,
>>>> deseo que cualquier filtrado posterior de las tablas relacionadas solo
>>>> afecten a los registros que cumplan la condicion de filtrado de la
>>>> tabla de clientes, es decir, que cuando en una de las tablas hijas
>>>> ejecute una sentencia SELECT solo afecten a los registros de la tabla
>>>> Cliente que tenga mostrados en pantalla a través de su oSQLTable (
>>>> ::oSQLClientes ).
>>>>
>>>> ¿ Como debería ser la sentecia SQL, o como debo hacerlo ?
>>>>
>>>> Perdón si no me he explado bien.
>>>>
>>>> Gracias de antemano
>>>> Saludos a todos
>>>>
>>>>