Buenos dias.
reitero esta consulta, tratando de expresarme mejor.
Tengo una DBF que muestro con Xbrowse.
tengo un campo "costo" otro campo "Pedir" y otro campo "total"
Modifico el campo "Pedir" editando la celda y lo modifica bien y actualiza el xBrowse.
Necesito modificar el campo "Total" con la multiplicacion de PEDIR*COSTO y no logro (no se como) hacerlo.
asi intento e incluso hice una funcion aparte y no lo consigo.
Se Puede realizar?
Si alguien me orienta lo agradecere.
oBrw:aCols[ 7 ]:nEditType := EDIT_GET
oBrw:aCols[ 7 ]:bEditValid := {|| if(1=1,(_ArtFor->Total := _ArtFor->Pedir*_ArtFor->Costo_ArtFor->(Eof()),msginfo('jjjj'),refXbrw(_ArtFor->(Recno()))_ArtFor->(Eof()),.t.),.f.) }
oBrw:aCols[ 7 ]:lAutoSave := .T.
oBrw:aCols[ 8 ]:nFooterType:= AGGR_TOTAL
oBrw:MakeTotals()
*----------------
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
function RefXBrw(regi)
select _ArtFor
_ArtFor->(DbGoTop())
While !_ArtFor->(Eof())
_ArtFor->Total := _ArtFor->Costo*_ArtFor->Pedir
_ArtFor->(DbSkip())
end
_ArtFor->(DbGoTo(regi))
return NIL
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
Gracias-
Reitero consulta para actualizar un campo con XBrowse
-
- Posts: 212
- Joined: Wed Apr 07, 2021 3:56 pm
Re: Reitero consulta para actualizar un campo con XBrowse
Cambia el bEditValid por bEditValue
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
-
- Posts: 212
- Joined: Wed Apr 07, 2021 3:56 pm
Re: Reitero consulta para actualizar un campo con XBrowse
Cristobal.
Disculpa mi bruteza pero cambiando lo que indicas me muestra un numero que no se de donde sale.
lo estare aplicando mal.
esta es la funcion completa. necesito poder editar los valores de la columna PEDIR y al hacerlo en la columna TOTAL se muestre el resultado
de multiplicar PEDIR*COSTO y se muestre la suma de de la columna TOTAL al pie.
hasta aca puedo editar el campo PEDIR y se actualiza el mismo, el resto no lo logro realizar.
Si puedes darle una ojeada te agradezco. Seguro es algo muy simple que no se hacer.
//------------------------------------------------------------------------------------------------------------------------------------------------------------*/
function AbmOC()
local napu
local aBotones := {}
local oDlg, oBrw, cAlias := cGetNewAlias( "_ARTFOR" )
local oBr, oFont
local titgral := 'Stock'
local atitcol := ''
local acampos := {}
local lcampos
Private oBar
acampos := {|| {str(ArtFor->Articulo,4)+' '+ArtFor->Detalle+' '+ArtFor->Abrevia } }
lcampos := {|| str(ArtFor->Articulo,4)+' '+ArtFor->Detalle+' '+ArtFor->Abrevia }
atitcol := "Cód. Detalle Abrevia"
aBotones := { {"Impre1.bmp" ,"Edito" , "Edito" , {||/*EditCS(_ArtFor->Pedir),*/oBrw:MakeTotals(),oBrw:SetFocus(),oBrw:Refresh() },VK_RETURN,"<RETURN>",.f.},;
{"Impre1.bmp" ,"Imprime OC" , "Imprime OC " , {|| lstOC(),oBrw:SetFocus(),oBrw:Refresh() },VK_R ,"<V>" ,.t.},;
{"Exit.bmp" ,"Sale de Browse" , "Salir" , {|| oDlg:end() },VK_ESCAPE,"<Escape>",.t.} ;
}
SET DATE ITALIAN
SET CENTURY ON
XBrNumFormat( 'E', .t. )
SetBalloon( .t. )
dbcloseall()
use colorfw new
use tecnico new
use corregir index corregi1 new
use acciones index accione1 new
use RamFor index RamFor1, RamFor2 new
use RubFor index RubFor1, RubFor2 new
use ProvFor index ProvFor1, ProvFor2 new
use ArtFor index ArtFor1, ArtFor2, ArtFor3, ArtFor4, ArtFor5 new
use _ArtFor index _ArtFor1, _ArtFor2 new
zap
select ArtFor
ArtFor->(DbGoTop())
While !ArtFor->(Eof())
select _ArtFor
_ArtFor->(DbAppend())
_ArtFor->Articulo := ArtFor->Articulo
_ArtFor->Detalle := ArtFor->Detalle
_ArtFor->Abrevia := ArtFor->Abrevia
_ArtFor->Costo := ArtFor->Costo
_ArtFor->StockMin := ArtFor->StockMin
_ArtFor->StockAct := ArtFor->StockAct
_ArtFor->Pedir := ArtFor->StockMin-ArtFor->StockAct
_ArtFor->Total := _ArtFor->Pedir*_ArtFor->Costo
select ArtFor
ArtFor->(DbSkip())
end
select _ArtFor
_ArtFor->(DbGoTop())
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15
DEFINE BRUSH oBr RESOURCE "beige2"
DEFINE DIALOG oDlg FROM 1, 30 TO 650, 1050 FONT oFont TITLE 'Generador de Orden de Compra' PIXEL
@ 4,5 XBROWSE oBrw ;
COLUMNS "Articulo", "left(Detalle,35)", "Abrevia", "Costo", "StockAct", "StockMin", "Pedir","Total" ;
HEADERS "Cód.", "Detalle", "Abr.", "Costo", "Stock Act", "Stock Min", "Pedir","Total";
COLSIZES -10,150,-10,-10,-10,-10,-10,-10 OF oDlg ;
SIZE 500,283 PIXEL ;
JUSTIFY .T.,.f.,.f.,.t.,.t.,.t.,.t.,.t. ;
ALIAS cAlias AUTOSORT FOOTERS LINES CELL NOBORDER ;
BACKGROUND aGrad VERTICAL
oBrw:nStretchCol := 2
oBrw:nRowHeight := 30
oBrw:nMarqueeStyle := 4
// anulo el doble color d los registros
oBrw:lContrastClr := .f.
// quitar barra horizontal
oBrw:lHScroll := .f.
oBrw:bKeyDown:={|nKey,nFlag|iif(veo(@nApu,@oBrw,aBotones,nKey),eval(aBotones[nApu,4]),NIL)}
oBrw:aCols[ 7 ]:nEditType := EDIT_GET
oBrw:aCols[ 7 ]:bEditValid := {|| if(1=1,(_ArtFor->Total := _ArtFor->Pedir*_ArtFor->Costo,msginfo('jjjj'),refXbrw(_ArtFor->(Recno())),_ArtFor->(Eof()),.t.),.f.) }
oBrw:aCols[ 7 ]:lAutoSave := .T.
oBrw:aCols[ 8 ]:nFooterType:= AGGR_TOTAL
oBrw:MakeTotals()
oBrw:CreateFromCode()
cGrad := PadR( GradStr( BrwGrad( oBrw ) ), 128 )
ACTIVATE DIALOG oDlg CENTERED on INIT (BtnBarNew( oBrw, @oDlg, aBotones))
RELEASE BRUSH oBr
RELEASE FONT oFont
dbcloseall()
return nil
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
function RefXBrw(regi)
select _ArtFor
_ArtFor->(DbGoTop())
While !_ArtFor->(Eof())
_ArtFor->Total := _ArtFor->Costo*_ArtFor->Pedir
_ArtFor->(DbSkip())
end
_ArtFor->(DbGoTo(regi))
return NIL
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
Disculpa mi bruteza pero cambiando lo que indicas me muestra un numero que no se de donde sale.
lo estare aplicando mal.
esta es la funcion completa. necesito poder editar los valores de la columna PEDIR y al hacerlo en la columna TOTAL se muestre el resultado
de multiplicar PEDIR*COSTO y se muestre la suma de de la columna TOTAL al pie.
hasta aca puedo editar el campo PEDIR y se actualiza el mismo, el resto no lo logro realizar.
Si puedes darle una ojeada te agradezco. Seguro es algo muy simple que no se hacer.
//------------------------------------------------------------------------------------------------------------------------------------------------------------*/
function AbmOC()
local napu
local aBotones := {}
local oDlg, oBrw, cAlias := cGetNewAlias( "_ARTFOR" )
local oBr, oFont
local titgral := 'Stock'
local atitcol := ''
local acampos := {}
local lcampos
Private oBar
acampos := {|| {str(ArtFor->Articulo,4)+' '+ArtFor->Detalle+' '+ArtFor->Abrevia } }
lcampos := {|| str(ArtFor->Articulo,4)+' '+ArtFor->Detalle+' '+ArtFor->Abrevia }
atitcol := "Cód. Detalle Abrevia"
aBotones := { {"Impre1.bmp" ,"Edito" , "Edito" , {||/*EditCS(_ArtFor->Pedir),*/oBrw:MakeTotals(),oBrw:SetFocus(),oBrw:Refresh() },VK_RETURN,"<RETURN>",.f.},;
{"Impre1.bmp" ,"Imprime OC" , "Imprime OC " , {|| lstOC(),oBrw:SetFocus(),oBrw:Refresh() },VK_R ,"<V>" ,.t.},;
{"Exit.bmp" ,"Sale de Browse" , "Salir" , {|| oDlg:end() },VK_ESCAPE,"<Escape>",.t.} ;
}
SET DATE ITALIAN
SET CENTURY ON
XBrNumFormat( 'E', .t. )
SetBalloon( .t. )
dbcloseall()
use colorfw new
use tecnico new
use corregir index corregi1 new
use acciones index accione1 new
use RamFor index RamFor1, RamFor2 new
use RubFor index RubFor1, RubFor2 new
use ProvFor index ProvFor1, ProvFor2 new
use ArtFor index ArtFor1, ArtFor2, ArtFor3, ArtFor4, ArtFor5 new
use _ArtFor index _ArtFor1, _ArtFor2 new
zap
select ArtFor
ArtFor->(DbGoTop())
While !ArtFor->(Eof())
select _ArtFor
_ArtFor->(DbAppend())
_ArtFor->Articulo := ArtFor->Articulo
_ArtFor->Detalle := ArtFor->Detalle
_ArtFor->Abrevia := ArtFor->Abrevia
_ArtFor->Costo := ArtFor->Costo
_ArtFor->StockMin := ArtFor->StockMin
_ArtFor->StockAct := ArtFor->StockAct
_ArtFor->Pedir := ArtFor->StockMin-ArtFor->StockAct
_ArtFor->Total := _ArtFor->Pedir*_ArtFor->Costo
select ArtFor
ArtFor->(DbSkip())
end
select _ArtFor
_ArtFor->(DbGoTop())
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15
DEFINE BRUSH oBr RESOURCE "beige2"
DEFINE DIALOG oDlg FROM 1, 30 TO 650, 1050 FONT oFont TITLE 'Generador de Orden de Compra' PIXEL
@ 4,5 XBROWSE oBrw ;
COLUMNS "Articulo", "left(Detalle,35)", "Abrevia", "Costo", "StockAct", "StockMin", "Pedir","Total" ;
HEADERS "Cód.", "Detalle", "Abr.", "Costo", "Stock Act", "Stock Min", "Pedir","Total";
COLSIZES -10,150,-10,-10,-10,-10,-10,-10 OF oDlg ;
SIZE 500,283 PIXEL ;
JUSTIFY .T.,.f.,.f.,.t.,.t.,.t.,.t.,.t. ;
ALIAS cAlias AUTOSORT FOOTERS LINES CELL NOBORDER ;
BACKGROUND aGrad VERTICAL
oBrw:nStretchCol := 2
oBrw:nRowHeight := 30
oBrw:nMarqueeStyle := 4
// anulo el doble color d los registros
oBrw:lContrastClr := .f.
// quitar barra horizontal
oBrw:lHScroll := .f.
oBrw:bKeyDown:={|nKey,nFlag|iif(veo(@nApu,@oBrw,aBotones,nKey),eval(aBotones[nApu,4]),NIL)}
oBrw:aCols[ 7 ]:nEditType := EDIT_GET
oBrw:aCols[ 7 ]:bEditValid := {|| if(1=1,(_ArtFor->Total := _ArtFor->Pedir*_ArtFor->Costo,msginfo('jjjj'),refXbrw(_ArtFor->(Recno())),_ArtFor->(Eof()),.t.),.f.) }
oBrw:aCols[ 7 ]:lAutoSave := .T.
oBrw:aCols[ 8 ]:nFooterType:= AGGR_TOTAL
oBrw:MakeTotals()
oBrw:CreateFromCode()
cGrad := PadR( GradStr( BrwGrad( oBrw ) ), 128 )
ACTIVATE DIALOG oDlg CENTERED on INIT (BtnBarNew( oBrw, @oDlg, aBotones))
RELEASE BRUSH oBr
RELEASE FONT oFont
dbcloseall()
return nil
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
function RefXBrw(regi)
select _ArtFor
_ArtFor->(DbGoTop())
While !_ArtFor->(Eof())
_ArtFor->Total := _ArtFor->Costo*_ArtFor->Pedir
_ArtFor->(DbSkip())
end
_ArtFor->(DbGoTo(regi))
return NIL
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
Re: Reitero consulta para actualizar un campo con XBrowse
A los objetos columnas los puedes referenciar por su header o por su posicion en el browse
que es lo mismo que
Code: Select all | Expand
oBrw:oCol( "Total" ):bEditValue := { || oBrw:oCol( "Pedir" ):Value * oBrw:oCol( "Costo" ):Value }
oBrw:oCol( "Pedir" ):nEditType := 1
Code: Select all | Expand
oBrw:oCol( 8 ):bEditValue := { || oBrw:oCol( 7 ):Value * oBrw:oCol( 4 ):Value }
oBrw:oCol( 7 ):nEditType := 1
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
- FranciscoA
- Posts: 2159
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Reitero consulta para actualizar un campo con XBrowse
Saludos, Cristóbal.
Camilo:
Camilo:
Code: Select all | Expand
Aqui está otro ejemplo parcial de como hacerlo:
function XBrwFactuDBF()
local oDlg, oBrw, cAlias
DbCreate("Tempo",{ {"Codigo" , "N", 4,0 } ,;
{"Descrip" , "C", 15,0 } ,;
{"Cantidad" , "N", 10,0 } ,;
{"Precio" , "N", 10,2 } ,;
{"ValorTot" , "N", 10,2 } })
dbUseArea(.t.,,"Tempo","Tempo",.f.)
DbSelectArea("Tempo")
DbAppend()
cAlias := Alias()
DEFINE DIALOG oDlg SIZE 800,450 PIXEL TITLE "INVOICE"
@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
DATASOURCE cAlias ;
COLUMNS "CODIGO", "DESCRIP", "CANTIDAD", "PRECIO", "VALORTOT" ;
HEADERS "CODIGO", "DESCRIP", "CANTIDAD", "PRECIO", "VALORTOT" ;
PICTURES "9999", nil, "9,999", "9,999,99, 999,999.99" ;
CELL LINES FOOTERS NOBORDER FASTEDIT
oBrw:nEditTypes := { EDIT_GET, EDIT_NONE, EDIT_GET, EDIT_GET, EDIT_NONE, EDIT_NONE, EDIT_NONE }
WITH OBJECT oBrw:Codigo
:bEditValid := { |oGet| oGet:VarGet() > 0 }
:bOnChange := { |oCol| oBrw:Descrip:Value := "Codigo " + Str(oBrw:Codigo:Value,4) }
END
WITH OBJECT oBrw:Cantidad
:bEditWhen := { || ! Empty( oBrw:Codigo:Value ) }
:bOnChange := { || oBrw:MakeTotals(), oBrw:RefreshFooters() }
:bEditValid := { |oGet| oGet:VarGet() > 0 }
END
WITH OBJECT oBrw:Precio
:bEditWhen := { || ! Empty( oBrw:Codigo:Value ) .and. ! Empty( oBrw:Cantidad:Value ) }
:bOnChange := { || oBrw:MakeTotals(), oBrw:RefreshFooters() }
:bEditValid := { |oGet| oGet:VarGet() > 0 }
END
WITH OBJECT oBrw:ValorTot
:bEditValue := { || oBrw:Cantidad:Value * oBrw:Precio:Value }
:cEditPicture := "999,999,999.99"
:nFooterType := AGGR_SUM
END
oBrw:bPastEof := { || If( Empty( oBrw:ValorTot:Value ), nil, ;
( (cAlias)->(DbAppend()),;
oBrw:GoDown(),;
oBrw:GoLeftMost(),;
oBrw:Refresh() ) ) ;
}
oBrw:nHeadStrAligns := AL_CENTER
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( oBrw:SetFocus() )
Tempo->(DbCloseArea())
Ferase("Tempo.dbf")
return nil
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
-
- Posts: 212
- Joined: Wed Apr 07, 2021 3:56 pm
Re: Reitero consulta para actualizar un campo con XBrowse
Muchas gracias Cristobal y Francisco por su tiempo. Lo pruebo y comento. GRACIAS!!!
-
- Posts: 212
- Joined: Wed Apr 07, 2021 3:56 pm
Re: Reitero consulta para actualizar un campo con XBrowse
Cristobal y Francisco.
Perfecto. GRACIAS!!!!
José Camilo
Perfecto. GRACIAS!!!!
José Camilo