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

#6 Alejandro Mesa
08/06/2005 - 17:29 | Informe spam
Cesar,

Usa los corchetes (square brackets) como te indicque y ademas asigna un
alias a cada columna que tenga este tipo de patron (espacios en el nombre,
uso de signos de puntuacion, uso de palabras claves de t-sql, etc.).

Ejemplo:

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


AMB

"Cesar" wrote:


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
#7 Cesar
08/06/2005 - 18:23 | Informe spam
Hola Alejandro, te he molestado mucho con esto, pero sinceramente no me
explico porque no funciona.

He realizado la consulta tal como la incluyes

select Cliente,[C.P.] as C2 from Base

pero el continuo error que se produce es

" 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.


Ya intente "seccionar" el nombre por medio de Strings para obterner la
consulta tal como la presento anteriormente, pero no me permite hacerlo
tampoco.

Será algo que tiene que ver con la versión de VB. que utilizó o con el
componente de ADO 'Microsoft ActiveX Data Objects 2.1 Library'

En fin, quizá lo unico que pueda hacer es resignarme a cambiar el nombre del
campo y seguir buscando en la red.

Muchas gracias por todo

César G.




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

Usa los corchetes (square brackets) como te indicque y ademas asigna un
alias a cada columna que tenga este tipo de patron (espacios en el nombre,
uso de signos de puntuacion, uso de palabras claves de t-sql, etc.).

Ejemplo:

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


AMB

"Cesar" wrote:

>
> 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.
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > >
> > >
> > >
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida