Hola Amigos y colegas:
Tengo el presente reto del que no hayo solución, trataré de explicarme:
Tengo una tabla con los siguientes registros
Esta ordenada por la columna SEC
Ahora necesito mover los registros de abajo hacia arriba, el registro con la secuencia 23
debe subir a quedar en el lugar del registro de la sec 1, recorriendo el resto de los registros
hacia abajo, tal como se ve en la siguiente imagen
Observen que en cada movimiento la fecha se incrementa un día, así hasta llegar al último
día del mes
Si fuera necesario crear una nueva tabla con los registros ya movidos(recorridos) no hay inconveniente.
si no fui claro, se vale preguntar.
Gracias por el apoyo e ideas
Saludos
Ayuda con este reto
Ayuda con este reto
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
- VitalJavier
- Posts: 242
- Joined: Mon Jun 10, 2013 6:40 pm
Re: Ayuda con este reto
Armando
Probe asi y me resulto.
espero y sea lo que querias.
Probe asi y me resulto.
Code: Select all | Expand
aDemo := ASort(aDemo,,, {|x,y| x[3] < y[3]})
xbrowse(aDemo)
aDemo := ASort(aDemo,,, {|x,y| x[3] > y[3]})
aDemo := ASort(aDemo,2,, {|x,y| x[3] < y[3]})
xbrowse(aDemo)
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Ayuda con este reto
Code: Select all | Expand
#include "fivewin.ch"
REQUEST DBFCDX
function Main()
local oDlg, oBrw, oFont, x
local dBaseDate := STOD( "20230102" )
local dDate := dBaseDate
local nRotate := 0
CreateRotateTable()
USE ROTATE NEW SHARED VIA "DBFCDX"
dBaseDate := FIELD->FECHA
dDate := dBaseDate
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
DEFINE DIALOG oDlg SIZE 400,670 PIXEL TRUEPIXEL ;
FONT oFont
@ 70,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
DATASOURCE "ROTATE" AUTOCOLS ;
CELL LINES NOBORDER
WITH OBJECT oBrw
:nStretchCol := 1
:aCols[ 2 ]:bEditValue := { || FIELD->FECHA + nRotate }
:aFilter := Array( 23 )
AEval( :aFilter, { |u,i| :aFilter[ i ] := i } )
:CreateFromCode()
END
@ 10,020 BTNBMP BITMAP 0xE112 SIZE 80,40 PIXEL OF oDlg FLAT ;
ACTION ( nRotate--, ;
x := oBrw:aFilter[ 1 ], ADel( oBrw:aFilter, 1 ), ;
oBrw:aFilter[ 23 ] := x, ;
oBrw:Refresh(), oBrw:SetFocus() )
@ 10,280 BTNBMP BITMAP 0xE111 SIZE 80,40 PIXEL OF oDlg FLAT ;
ACTION ( nRotate++, ;
AIns( oBrw:aFilter, 1, ATail( oBrw:aFilter ) ), ;
oBrw:Refresh(), oBrw:SetFocus() )
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
return nil
static function CreateRotateTable()
local aData := Array( 23 )
AEval( aData, { |u,i| aData[ i ] := { "RF07", STOD( "20230102" ), "SMT", i, 700+i } } )
AEval( aData, { |a,i| a[ 5 ] += 1 }, 8 )
AEval( aData, { |a,i| a[ 5 ] += 1 }, 14 )
AEval( aData, { |a,i| a[ 5 ] += 1 }, 21 )
DBCREATE( "ROTATE.DBF", { { "ROL", "C", 4, 0 }, ;
{ "FECHA", "D", 8, 0 }, { "RUTA", "C", 3, 0 }, ;
{ "SEC", "N", 2, 0 }, { "ECO", "N", 3, 0 } }, ;
"DBFCDX", .T., "ROT" )
FW_ArrayToDBF( aData )
CLOSE DATA
return nil
We have used DBF for this test. But this logic works with any table, RecordSet, RowSet, Query, etc.
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: Ayuda con este reto
Mr. Rao and Javier:
Muchas gracias, probaré y aviso.
Gracias nuevamente
Muchas gracias, probaré y aviso.
Gracias nuevamente
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero