Power Builder - ¿Se puede realizar esto? DeleteRow Masivo

 
Vista:
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

¿Se puede realizar esto? DeleteRow Masivo

Publicado por Antonio (1271 intervenciones) el 23/10/2017 17:45:01
Un saludo a todos:

Resulta que en un Datawindow recupero muchos registro con diferentes numeros de guia, pretendo que el usuario al indicar un numero de guia los elimine del Datawindow.

Hay una funcion llamada Deleterow(Datawindow,Registro), sin embargo al utilizarlo en un for next, en el ultimo registro se genera un error indicando que el campo no existe.

El DeteleRow va registro por registro y lo que necesito es realizar el DeleteRow al datwindow y que borre todos los registros que coincidan con el numero de guia que el usuario indique.

Quiero aclarar, que esta eliminación de registros no deseo hacerlo en la base de datos directamente, quiero hacerlo unicamente en el datawindow, el motivo es que cuando el usuario recupera diferentes numeros de guia en el datawindow, tenga la oportunidad de bnorrarlos del datawindow sin que ésto afecte a la base de datos, ya que se enviará un proceso de acuerdo a los numeros de guias que el usuario indique y se procesará cierta información.

¿Es posible realizar ese proceso masivo con DeleteRow() ?

Agradezco su tiempo y aportaciones...
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
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

¿Se puede realizar esto? DeleteRow Masivo

Publicado por Antonio (1271 intervenciones) el 23/10/2017 18:16:44
Solucionado....

tuve que realizar validaciones dentro de un Do While, para los que les interese les dejo el código.

1
2
3
4
5
6
7
8
9
10
11
12
13
long nCount,nFila
 
nCount = RowCount(dw_datos)
nFila = 1
DO WHILE nFila <= nCount
	IF GetItemDecimal(dw_datos,nFila,'guia_no') = idGuia THEN
			DeleteRow(dw_datos,nFila)
				nCount = RowCount(dw_datos)
					nFila = 1
	ELSE
		nFila += 1
	END IF
LOOP
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 821
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

¿Se puede realizar esto? DeleteRow Masivo

Publicado por Leonardo Daniel A. (481 intervenciones) el 24/10/2017 05:58:38
Hola creo que seria mas optimo con un Find

long ll_fila

ll_fila = dw_datos.find( "guia_no = " + String( id_guia ), 1, dw_datos.rowcount() )
dw_datos.deleteRow( ll_fila )
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
Imágen de perfil de Eduardo
Val: 77
Ha aumentado 1 puesto en Power Builder (en relación al último mes)
Gráfica de Power Builder

¿Se puede realizar esto? DeleteRow Masivo

Publicado por Eduardo (34 intervenciones) el 25/10/2017 15:40:32
Hola,
Otra forma muy sencilla es:

1
2
3
For nFila = dw_datos.rowCount() to 1 step -1
   dw_datos.DeleteRow( nFila )
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