Consulta con DISTINCT

07/06/2005 - 22:03 por Cesar | Informe spam
Saludos a todos.

Un agradecimiento de antemano por el tiempo que se toman para leer este
post.

Utilizo VB 6.0, ADO y excel; y aunque pareciera este no ser el foro
adecuado, la pregunta va encaminada a una consulta SQL

ya que utilizo lo siguiente para consultar una tabla de Excel,

StrSQL = "Select DISTINCT Cliente,Giro,Primer Nombre from [Base$]"

Tengo mas nombres de campos pero me manda el siguiente mensaje de error :

Error -2147217900(80040e14) en tiempo de ejecución :

Error de sintaxis (falta operador) en la expresión de consulta 'Primer
Nombre'

El Nombre del campo esta tal cual en la hoja de Excel.

Es por eso que pense que habría alguna otra forma de traer todos los campos,
ya que si lo cambio por "Select * from [Base$]" si me regresa todos
Algo asi como " Select * from [Base$] DISTINCT Cliente"

Es decir, que me traiga todos los campos, pero que excluya las filas
repetidas del campo Cliente.

Espero haber sido lo suficientemente explicito.

De nuevo Gracias.

César G.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
07/06/2005 - 22:12 | Informe spam
Cesar,

Debes delimitar las columnas que contienen espacio en su nombre. Puedes usar
apostrofe, [], o dble comilla si es que "SET QUOTED_IDENTIFIER" esta "on".

select [nombre con espacios], c2, ..., cn
from ...


AMB


"Cesar" wrote:

Saludos a todos.

Un agradecimiento de antemano por el tiempo que se toman para leer este
post.

Utilizo VB 6.0, ADO y excel; y aunque pareciera este no ser el foro
adecuado, la pregunta va encaminada a una consulta SQL

ya que utilizo lo siguiente para consultar una tabla de Excel,

StrSQL = "Select DISTINCT Cliente,Giro,Primer Nombre from [Base$]"

Tengo mas nombres de campos pero me manda el siguiente mensaje de error :

Error -2147217900(80040e14) en tiempo de ejecución :

Error de sintaxis (falta operador) en la expresión de consulta 'Primer
Nombre'

El Nombre del campo esta tal cual en la hoja de Excel.

Es por eso que pense que habría alguna otra forma de traer todos los campos,
ya que si lo cambio por "Select * from [Base$]" si me regresa todos
Algo asi como " Select * from [Base$] DISTINCT Cliente"

Es decir, que me traiga todos los campos, pero que excluya las filas
repetidas del campo Cliente.

Espero haber sido lo suficientemente explicito.

De nuevo Gracias.

César G.







Respuesta Responder a este mensaje
#2 Alejandro Mesa
07/06/2005 - 22:16 | Informe spam
Correccion,

Doble comillas o [].

Ejemplo:

use northwind
go

SET QUOTED_IDENTIFIER on
go

select
[nombre con espacios],
"nombre con espacios"
from
(
select 1 as 'nombre con espacios'
) as t
go

SET QUOTED_IDENTIFIER off
go


AMB

"Alejandro Mesa" wrote:

Cesar,

Debes delimitar las columnas que contienen espacio en su nombre. Puedes usar
apostrofe, [], o dble comilla si es que "SET QUOTED_IDENTIFIER" esta "on".

select [nombre con espacios], c2, ..., cn
from ...


AMB


"Cesar" wrote:

> Saludos a todos.
>
> Un agradecimiento de antemano por el tiempo que se toman para leer este
> post.
>
> Utilizo VB 6.0, ADO y excel; y aunque pareciera este no ser el foro
> adecuado, la pregunta va encaminada a una consulta SQL
>
> ya que utilizo lo siguiente para consultar una tabla de Excel,
>
> StrSQL = "Select DISTINCT Cliente,Giro,Primer Nombre from [Base$]"
>
> Tengo mas nombres de campos pero me manda el siguiente mensaje de error :
>
> Error -2147217900(80040e14) en tiempo de ejecución :
>
> Error de sintaxis (falta operador) en la expresión de consulta 'Primer
> Nombre'
>
> El Nombre del campo esta tal cual en la hoja de Excel.
>
> Es por eso que pense que habría alguna otra forma de traer todos los campos,
> ya que si lo cambio por "Select * from [Base$]" si me regresa todos
> Algo asi como " Select * from [Base$] DISTINCT Cliente"
>
> Es decir, que me traiga todos los campos, pero que excluya las filas
> repetidas del campo Cliente.
>
> Espero haber sido lo suficientemente explicito.
>
> De nuevo Gracias.
>
> César G.
>
>
>
>
>
>
>
Respuesta Responder a este mensaje
#3 Cesar
08/06/2005 - 00:59 | Informe spam
Muchas gracias por el tip Alejandro !

Sabes si la opcion SET QUOTED_IDENTIFIER se puede establecer en el codigo
de Visual Basic que estoy utilizando?

porque armo el SQL con

StrSQL = StrSQL & "[Nombre campo con espacios]

pero tengo problemas con un campo que tiene punto

he intentado ponerlo de la siguiente manera pero me marca error

(El nombre del campo es >>C.P.<<

StrSQL = StrSQL & "C" & "." & "P" & "."

o

StrSQL = StrSQL & "C." & "P."


pero marca error de formato ...

Espero que pueda auxiliarme.

Gracias

César G.








" escribió en el mensaje
news:
Correccion,

Doble comillas o [].

Ejemplo:

use northwind
go

SET QUOTED_IDENTIFIER on
go

select
[nombre con espacios],
"nombre con espacios"
from
(
select 1 as 'nombre con espacios'
) as t
go

SET QUOTED_IDENTIFIER off
go


AMB

"Alejandro Mesa" wrote:

> Cesar,
>
> Debes delimitar las columnas que contienen espacio en su nombre. Puedes


usar
> apostrofe, [], o dble comilla si es que "SET QUOTED_IDENTIFIER" esta


"on".
>
> select [nombre con espacios], c2, ..., cn
> from ...
>
>
> AMB
>
>
> "Cesar" wrote:
>
> > Saludos a todos.
> >
> > Un agradecimiento de antemano por el tiempo que se toman para leer


este
> > post.
> >
> > Utilizo VB 6.0, ADO y excel; y aunque pareciera este no ser el foro
> > adecuado, la pregunta va encaminada a una consulta SQL
> >
> > ya que utilizo lo siguiente para consultar una tabla de Excel,
> >
> > StrSQL = "Select DISTINCT Cliente,Giro,Primer Nombre from [Base$]"
> >
> > Tengo mas nombres de campos pero me manda el siguiente mensaje de


error :
> >
> > Error -2147217900(80040e14) en tiempo de ejecución :
> >
> > Error de sintaxis (falta operador) en la expresión de consulta 'Primer
> > Nombre'
> >
> > El Nombre del campo esta tal cual en la hoja de Excel.
> >
> > Es por eso que pense que habría alguna otra forma de traer todos los


campos,
> > ya que si lo cambio por "Select * from [Base$]" si me regresa todos
> > Algo asi como " Select * from [Base$] DISTINCT Cliente"
> >
> > Es decir, que me traiga todos los campos, pero que excluya las filas
> > repetidas del campo Cliente.
> >
> > Espero haber sido lo suficientemente explicito.
> >
> > De nuevo Gracias.
> >
> > César G.
> >
> >
> >
> >
> >
> >
> >
Respuesta Responder a este mensaje
#4 Alejandro Mesa
08/06/2005 - 14:04 | Informe spam
Cesar,

Puedes hacer lo mismo que hicistes con la culmna que contiene espacios en el
nombre.


Ejemplo:

select
[nombre.de.columna.con.puntos]
from
(
select 1 as 'nombre.de.columna.con.puntos'
) as t


AMB

"Cesar" wrote:

Muchas gracias por el tip Alejandro !

Sabes si la opcion SET QUOTED_IDENTIFIER se puede establecer en el codigo
de Visual Basic que estoy utilizando?

porque armo el SQL con

StrSQL = StrSQL & "[Nombre campo con espacios]

pero tengo problemas con un campo que tiene punto

he intentado ponerlo de la siguiente manera pero me marca error

(El nombre del campo es >>C.P.<<

StrSQL = StrSQL & "C" & "." & "P" & "."

o

StrSQL = StrSQL & "C." & "P."


pero marca error de formato ...

Espero que pueda auxiliarme.

Gracias

César G.








" escribió en el mensaje
news:
> Correccion,
>
> Doble comillas o [].
>
> Ejemplo:
>
> use northwind
> go
>
> SET QUOTED_IDENTIFIER on
> go
>
> select
> [nombre con espacios],
> "nombre con espacios"
> from
> (
> select 1 as 'nombre con espacios'
> ) as t
> go
>
> SET QUOTED_IDENTIFIER off
> go
>
>
> AMB
>
> "Alejandro Mesa" wrote:
>
> > Cesar,
> >
> > Debes delimitar las columnas que contienen espacio en su nombre. Puedes
usar
> > apostrofe, [], o dble comilla si es que "SET QUOTED_IDENTIFIER" esta
"on".
> >
> > select [nombre con espacios], c2, ..., cn
> > from ...
> >
> >
> > AMB
> >
> >
> > "Cesar" wrote:
> >
> > > Saludos a todos.
> > >
> > > Un agradecimiento de antemano por el tiempo que se toman para leer
este
> > > post.
> > >
> > > Utilizo VB 6.0, ADO y excel; y aunque pareciera este no ser el foro
> > > adecuado, la pregunta va encaminada a una consulta SQL
> > >
> > > ya que utilizo lo siguiente para consultar una tabla de Excel,
> > >
> > > StrSQL = "Select DISTINCT Cliente,Giro,Primer Nombre from [Base$]"
> > >
> > > Tengo mas nombres de campos pero me manda el siguiente mensaje de
error :
> > >
> > > Error -2147217900(80040e14) en tiempo de ejecución :
> > >
> > > Error de sintaxis (falta operador) en la expresión de consulta 'Primer
> > > Nombre'
> > >
> > > El Nombre del campo esta tal cual en la hoja de Excel.
> > >
> > > Es por eso que pense que habría alguna otra forma de traer todos los
campos,
> > > ya que si lo cambio por "Select * from [Base$]" si me regresa todos
> > > Algo asi como " Select * from [Base$] DISTINCT Cliente"
> > >
> > > Es decir, que me traiga todos los campos, pero que excluya las filas
> > > repetidas del campo Cliente.
> > >
> > > Espero haber sido lo suficientemente explicito.
> > >
> > > De nuevo Gracias.
> > >
> > > César G.
> > >
> > >
> > >
> > >
> > >
> > >
> > >



Respuesta Responder a este mensaje
#5 Cesar
08/06/2005 - 17:05 | Informe spam
Hola Alejandro,

Muy buenos días y de nueva cuenta le agradezco por tomarse la molestia de
ayudarme con esto.

He hecho lo que me comento de la siguiente manera :

En primera instancia tengo

Select DISTINCT cliente, calle, direccion, [Primer Apellido], [C.P.] from
Tabla1

pero obtengo el siguiente Error

" no es un nombre válido. Asegúrese de que no incluye caracteres o signos de
puntuación no válidos y que el nombre no es demasiado largo.

despues intente con :

strSQL ="Select DISTINCT cliente, calle, direccion, [Primer Apellido], " ' "
& "[" & "C.P." & " ' " & "]" from Tabla1"

Existe un espacio entre los apóstrofos para darle un poco de notoriedad.

Con esta instrucción no me marca ningún error, pero al visualizarlo en un
grid de V.B. el nombre del campo lo coloca como Expr1031 y en todos los
registros me repite el dato >> C.P << algo que no tengo en la tabla.

Otro campo con el que tengo problemas es el siguiente; el nombre de este es
:

Correo Electrónico (1)

por lo que lo encierro entre [ ] , y lo divido en un String para obtener la
instruccion SQL como sigue

Select DISTINCT cliente, calle, direccion, [Primer Apellido], [Correo
Electrónico(1)] from Tabla1

El error es :

No se han especificado algunos valores para algunos de los parámetros
requeridos.


He ido agregando todos los campos existentes en la tabla, que son 42 en
total y solamente tengo problemas con los campos que te mencione
anteriormente.

Por si deseas observar toda la instrucción la coloqué al pie de este
mensaje.

Me pregunto si se debe a la longitud de los nombres de los campos, la
cantidad o algun otro detalle.
Sé que lo más fácil sería cambiar los nombres de los campos en la tabla,
pero pienso que no es el usuario quién debe adecuarse a mis necesidades,
sino yo el que tengo que adecuar a lo que se le puede presentar a él; y por
supuesto es mi deseo aprender como realizarlo, en el caso de que sea
imposible alterar el nombre del campo.

Un saludo y gracias de nuevo.

Select DISTINCT Cliente, Giro,[Principales Marcas],[Fuente de adquisición
del contacto],Clasificación,[Consultor Venta],[Consultor Producción],[Página
Web],Título,[Primer Nombre],[Segundo Nombre],[Apellido Paterno],[Apellido
Materno],Género,Puesto,[Teléfono 1 con Lada],[Extensión 1],[Teléfono 2 con
Lada],[Extensión 2],Celular,[Fecha de Último Contacto (dd/mm/aa)],[Tipo de
Contacto (Personal, Telefónico, mail, otro)],[Status o tema del
Contacto],[Calidad del Contacto para el éxito (Bajo, Medio,
Alto)],[Siguientes Pasos],[Dirección (Sectores, Consumo, New Business,
Technology)],[Sector (CODE Sectores TNS)],[Expertice (CODE Expertice
TNS)],[Tipo de Cliente (1# Cliente Actual 2004 y
2],[Calle-Número],Colonia,Ciudad,Estado,País,[Correo Electrónico(1)],[Evento
1],Observaciones,[Fecha de Actualización],[Fecha de Revisión] from [Base$]


Saludos.
César G.

"Alejandro Mesa" escribió en el
mensaje news:
Cesar,

Puedes hacer lo mismo que hicistes con la culmna que contiene espacios en


el
nombre.


Ejemplo:

select
[nombre.de.columna.con.puntos]
from
(
select 1 as 'nombre.de.columna.con.puntos'
) as t


AMB

"Cesar" wrote:

> Muchas gracias por el tip Alejandro !
>
> Sabes si la opcion SET QUOTED_IDENTIFIER se puede establecer en el


codigo
> de Visual Basic que estoy utilizando?
>
> porque armo el SQL con
>
> StrSQL = StrSQL & "[Nombre campo con espacios]
>
> pero tengo problemas con un campo que tiene punto
>
> he intentado ponerlo de la siguiente manera pero me marca error
>
> (El nombre del campo es >>C.P.<<
>
> StrSQL = StrSQL & "C" & "." & "P" & "."
>
> o
>
> StrSQL = StrSQL & "C." & "P."
>
>
> pero marca error de formato ...
>
> Espero que pueda auxiliarme.
>
> Gracias
>
> César G.
>
>
>
>
>
>
>
>
> " escribió en el mensaje
> news:
> > Correccion,
> >
> > Doble comillas o [].
> >
> > Ejemplo:
> >
> > use northwind
> > go
> >
> > SET QUOTED_IDENTIFIER on
> > go
> >
> > select
> > [nombre con espacios],
> > "nombre con espacios"
> > from
> > (
> > select 1 as 'nombre con espacios'
> > ) as t
> > go
> >
> > SET QUOTED_IDENTIFIER off
> > go
> >
> >
> > AMB
> >
> > "Alejandro Mesa" wrote:
> >
> > > Cesar,
> > >
> > > Debes delimitar las columnas que contienen espacio en su nombre.


Puedes
> usar
> > > apostrofe, [], o dble comilla si es que "SET QUOTED_IDENTIFIER" esta
> "on".
> > >
> > > select [nombre con espacios], c2, ..., cn
> > > from ...
> > >
> > >
> > > AMB
> > >
> > >
> > > "Cesar" wrote:
> > >
> > > > Saludos a todos.
> > > >
> > > > Un agradecimiento de antemano por el tiempo que se toman para leer
> este
> > > > post.
> > > >
> > > > Utilizo VB 6.0, ADO y excel; y aunque pareciera este no ser el


foro
> > > > adecuado, la pregunta va encaminada a una consulta SQL
> > > >
> > > > ya que utilizo lo siguiente para consultar una tabla de Excel,
> > > >
> > > > StrSQL = "Select DISTINCT Cliente,Giro,Primer Nombre from [Base$]"
> > > >
> > > > Tengo mas nombres de campos pero me manda el siguiente mensaje de
> error :
> > > >
> > > > Error -2147217900(80040e14) en tiempo de ejecución :
> > > >
> > > > Error de sintaxis (falta operador) en la expresión de consulta


'Primer
> > > > Nombre'
> > > >
> > > > El Nombre del campo esta tal cual en la hoja de Excel.
> > > >
> > > > Es por eso que pense que habría alguna otra forma de traer todos


los
> campos,
> > > > ya que si lo cambio por "Select * from [Base$]" si me regresa


todos
> > > > Algo asi como " Select * from [Base$] DISTINCT Cliente"
> > > >
> > > > Es decir, que me traiga todos los campos, pero que excluya las


filas
> > > > repetidas del campo Cliente.
> > > >
> > > > Espero haber sido lo suficientemente explicito.
> > > >
> > > > De nuevo Gracias.
> > > >
> > > > César G.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
>
>
>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida