elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  DISTINCT SQL
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: DISTINCT SQL  (Leído 2,301 veces)
TheGhost(Z)

Desconectado Desconectado

Mensajes: 230



Ver Perfil
DISTINCT SQL
« en: 14 Julio 2007, 18:41 pm »

''Tengo la tabla CLIENTES con los campos:
''NOMBRE
''APELLIDOS
''CIUDAD


Código:
Dim Rs As New Recordset
Rs.Open "Select DISTINCT (NOMBRE)  From CLIENTES ", DBConex, adOpenStatic, adLockOptimistic
If Rs.RecordCount > 0 Then
    Dim Cadena As String
    For i = 1 To Rs.RecordCount
        Cadena = Cadena & Rs!Ciudad & " " & Rs!Telefono & Chr(13)
        Rs.movenext
    Next i
MsgBox Cadena
End If

Hay 30 Registros.. al cargar a la cadena me dice que no encuentra los campos Rs!Ciudad y Rs!Telefono.

Luego modifique a:
Código:
Cadena = Cadena & Rs!Nombre & Chr(13)
Ahora si me funciona. cargo 15 registros, pero no me sirve obtener solo los nombres, sino que tambien los apellidos y ciudad aunque se repitan..

¿como puedo hacer para que me muestre todos los campos y que no se repitan los valores del campo Nombre.?

Tambien intente com:
Código:
Rs.Open "Select DISTINCT (NOMBRE), Apellidos, Ciudad  From CLIENTES ", DBConex, adOpenStatic, adLockOptimistic

Cargo los 30 registros sin validar nada... es decir con repeticiones en el campo nombres...


En línea

Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: DISTINCT SQL
« Respuesta #1 en: 14 Julio 2007, 20:33 pm »

Primero de todo, nunca te va a encontrar el campo Telefono si nunca fue creado en la base de datos.

Como no se usar bien SQL en VB6 te escribo el codigo a medio pseudocodigo:

Código
  1. Dim Rs As New Recordset
  2. Dim Cadena As String
  3.  
  4. Rs.Open "Select DISTINCT (NOMBRE), Apellidos, Ciudad  From CLIENTES ", DBConex, adOpenStatic, adLockOptimistic
  5.  
  6. If Rs.RecordCount > 0 Then
  7.  
  8.   For i = 1 To Rs.RecordCount
  9.      if StrComp(Cadena, Rs!Nombre, vbTextCompare) = 1 then goto Existe
  10.      Cadena = Cadena & Rs!Nombre & " " & Rs!Ciudad & " " & Rs!Telefono & Chr(13)
  11.      Existe:
  12.      Rs.movenext
  13.   Next i
  14.  
  15.   MsgBox Cadena
  16.  
  17. End If

Como veras tu estas leyendo desde CLIENTES, los campos NOMBRE, APELLIDOS, CIUDAD, obvio que te va a dar error al intentar leer TELEFONO, sino me equivoco la solucion para leer todos los campos es:

Código
  1. Rs.Open "Select DISTINCT (*)  From CLIENTES ", DBConex, adOpenStatic, adLockOptimistic

Ahi coloque una linea que devuelve 1 si el NOMBRE ya estaba en CADENA y salta a Existe, de esa forma obviamos donde agregamos el nuevo registro:

Código
  1. if StrComp(Cadena, Rs!Nombre, vbTextCompare) = 1 then goto Existe

Es mas conveniente usar
Código
  1. VBCrLf
en vez de
Código
  1. Chr(13)


« Última modificación: 14 Julio 2007, 20:41 pm por Sancho.Mazorka » En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


TheGhost(Z)

Desconectado Desconectado

Mensajes: 230



Ver Perfil
Re: DISTINCT SQL
« Respuesta #2 en: 15 Julio 2007, 06:52 am »

Lo de telefono no lo borre..... fue un error al postearlo...
si pongo:

Código:
DISTINCT (*)

ME ARROJA LOS 30 REGISTROS...
PERO SI PONGO:

Código:
DISTINCT  NOMBRES
ME ARROJA 15 REGISTROS, PORQUE LOS OTROS 15 SON DUPLICADOS..
LO MALO ES QUE AL PONER SOLO NOMBRES LA TABLA SELECIONA SOLO EL CAMPO NOMBRES Y LOS CAMPOS APELLIDOS Y CIUDAD NO FIGURAN EN LA TABLA. ES POR ESO QUE AL LEERLO ME DA ERROR DE QUE NO ENCUENTRA LOS CAMPOS APELLIDOS Y CIUDAD.

PARA QUE TAMBIEN MUESTRE LOS CAMPOS APELLIDOS CIUDAD TENRIA QUE PONER ASI..

"
Código:
DISTINCT NOMBRES, APELLIDOS, TELEFONOS FROM CLIENTES"
PERO CON ESTA INSTRUCCION ME ARROJA LOS 30 REGISTROS....
En línea

Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: DISTINCT SQL
« Respuesta #3 en: 15 Julio 2007, 06:55 am »

Código
  1. Dim Rs As New Recordset
  2. Dim Cadena As String
  3.  
  4. Rs.Open "Select DISTINCT NOMBRES, APELLIDOS, TELEFONOS, CIUDAD FROM CLIENTES", DBConex, adOpenStatic, adLockOptimistic
  5.  
  6. If Rs.RecordCount > 0 Then
  7.  
  8.   For i = 1 To Rs.RecordCount
  9.      if StrComp(Cadena, Rs!Nombre, vbTextCompare) = 1 then goto Existe
  10.      Cadena = Cadena & Rs!Nombre & " " & Rs!Ciudad & " " & Rs!Telefono & Chr(13)
  11.      Existe:
  12.      Rs.movenext
  13.   Next i
  14.  
  15.   MsgBox Cadena
  16.  
  17. End If

Proba con eso, debe de andar, pero antes de probarlo como no se el nombre exacto de tus campos en la DB, revisalos.


Sancho.Mazorka    :¬¬
En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


TheGhost(Z)

Desconectado Desconectado

Mensajes: 230



Ver Perfil
Re: DISTINCT SQL
« Respuesta #4 en: 15 Julio 2007, 08:43 am »

Si voy a utilizar este codigo:
Código:
if StrComp(Cadena, Rs!Nombre, vbTextCompare) = 1 then goto Existe

Entonces ya no necesito poner
Código:
Select DISTINCT Nombre From CLientes

Sino direfctamente
Código:
Select * From Clientes
En línea

Sancho.Mazorka


Desconectado Desconectado

Mensajes: 480


Gamer & Programador


Ver Perfil WWW
Re: DISTINCT SQL
« Respuesta #5 en: 16 Julio 2007, 02:52 am »

No lei un gracias  :xD  jajaj todo bien, no hay problema!


Código
  1. Sancho.Mazorka  
En línea

Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Consulta Distinct a un solo campo « 1 2 »
Bases de Datos
matagalo 11 16,862 Último mensaje 15 Marzo 2022, 02:28 am
por Rodwin
Problema con una consulta no funciona Distinct « 1 2 3 »
Desarrollo Web
Marciano_79 21 11,741 Último mensaje 6 Abril 2016, 23:27 pm
por Marciano_79
clausula DISTINCT
.NET (C#, VB.NET, ASP)
PETTETE 0 2,262 Último mensaje 18 Agosto 2017, 11:44 am
por PETTETE
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines