Power Builder - DATOS REPETIDOS

 
Vista:

DATOS REPETIDOS

Publicado por IVAN (101 intervenciones) el 12/01/2004 21:38:39
HOLA A TODOS!!!

PRIMERO QUE TODO RECIBAN UN CORDIAL ABRAZO DE FELIZ AÑO DESDE VENEZUELA.

ESTE ES MI CASO:

POR EJEMPLO:
TENGO UN DATAWINDOW CON 10 FILAS
HAY UNA FILA LLAMADA CAMPO1
CAMPO1 TIENE LOS SIGUIENTES DATOS:

FILA1=CJ7001
FILA2=CJ7001
FILA3=CJ7002
FILA4=CJ7002
FILA5=CJ7003
FILA6=CJ7003
FILA7=CJ7004
FILA8=CJ7004
FILA9=CJ7005
FILA10=CJ7005

QUISIERA RECORRER CADA FILA Y PASAR A UN ARREGLO SOLAMENTE LOS DATOS SIN REPETIRLOS POR EJEMPLO:

CJ7001, CJ7002,CJ7003, CJ7004,CJ7005

COMO HAGO POR FAVOR!!!!

GRACIAS!!!

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:DATOS REPETIDOS

Publicado por Oscar (1178 intervenciones) el 13/01/2004 05:34:25
Creo que existen varios métodos. Puedes usar un CURSOR, con la palabra clave DISTINCT (sin repetir) en la instrucción SELECT. Leeremos los datos directamente de la tabla:

String mivariable
String miarreglo[ ] // Ilimitado o Unbound
Integer i

//Crea el cursor con los registros sin que se repitan
Declare micursor Cursor For Select Distinct campo1 From mitabla;
Open micursor;
Fetch micursor Into:mivariable;
//Llena el control MultiLineEdit con los registros
DO While Sqlca.SqlCode<>100
i=i+1
miarreglo[i]=mivariable
Fetch micursor Into:mivariable;
Loop
Close micursor;

//Para demostrar que funciona, llenaremos un control lb_1
//a partir de los datos que ya contiene el arreglo.
Integer j

lb_1.Reset()
For j=1 to i
lb_1.AddItem(miarreglo[j])
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DATOS REPETIDOS

Publicado por IVAN (101 intervenciones) el 14/01/2004 18:03:30
Hola Oscar, se me paso por alto especificar q los datos contenidos del datawindow son de un datawindow external, y creo q por la instruccion del CURSOR con el SELECT DISTINCT no me va a resultar, tendrias otro metodo?

Gracias por tomarte tu tiempo....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DATOS REPETIDOS

Publicado por Pedro López (3 intervenciones) el 15/01/2004 11:29:45
Si la datawindow está ordenada, es muy fácil. Al recorrer las filas, debes comprobar si el valor de CAMPO1 en la fila actual es igual que el de la fila anterior. Si es distinto debes añadirlo al arreglo, y si es igual quiere decir que ya lo habías añadido antes.

Si la datawindow no está ordenada, debes buscar el elemento actual entre las filas que ya has recorrido, o entre los elementos que ya has añadido al array.

En el siguiente ejemplo, lo que hago es buscar el valor de CAMPO1 entre las filas de la datawindow que ya he recorrido.

// EJEMPLO

string ls_valor, ls_arreglo[]
integer li_ultimo_elemento
long ll_contador, ll_fila, ll_num_filas

// Obtener el nº de filas
ll_num_filas = dw_ejemplo.rowcount()

// Recorrer todas las filas
for ll_contador = 1 to ll_num_filas
// Obtener el valor de la columna (para la fila actual)
ls_valor = dw_ejemplo.object.campo1[ll_contador]
// Buscar la primera fila que tiene el mismo valor
ll_fila = dw_ejemplo.find("campo1 = '" + ls_valor + "'", 0, ll_contador)
// Si la primera fila es la actual, es porque no se ha insertado antes
if ll_fila = ll_contador then
// Insertar el elemento en el arreglo
li_ultimo_elemento ++
ls_arreglo[li_ultimo_elemento] = ls_valor
end if
next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar