Hola, esto ya empieza a tomar forma, aunque sigo liado con los Arrays.
Os explico mi problema.
Tengo un fichero con 50 campos. Cuando leo cualquier registro del fichero asigno los valores leidos a un Array (codigo, articulo, Unidades, Cajas, Tipo1, tipo2, tip3.,etc..), usando para ello una función que tenia en Clipper llamada SAVEFIELD,
El problema lo tengo cuando quiero asignar esos valores leídos y que están en un Array a cada control de texto (TEXTBOX.., ETC), o Viceversa.., cuando quiero extraer el valor de cada TEXTBOX y pasarlo al Array.
Os paso lo que estoy montado.., no esta terminado pero estoy intentando pasar las funciones que he venido usando en clipper a esta plataforma y estoy un poco perdido.
Ah! he podido mostrar mejor el programa lineas más abajo..,
Como siempre muchas gracias por su ayuda y paciencia.
Espero poder corresponder.
Ayuda para asignar y tomar valores TEXTBOX
Moderator: Rathinagiri
- SALINETAS24
- Posts: 667
- Joined: Tue Feb 27, 2018 3:06 am
- DBs Used: DBF
- Contact:
Ayuda para asignar y tomar valores TEXTBOX
Last edited by SALINETAS24 on Sat Mar 03, 2018 9:30 pm, edited 1 time in total.
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no.
- SALINETAS24
- Posts: 667
- Joined: Tue Feb 27, 2018 3:06 am
- DBs Used: DBF
- Contact:
Re: Ayuda para asignar y tomar valores TEXTBOX
Code: Select all
/ creo que ahora se entiende mejor.
#include 'hmg.ch'
#include "dbf.ch"
Function _MANTARTI()
PRIVATE aField:={}
PRIVATE Getlist:={}
PUBLIC Nuevo := .F.
IF !FILE("ARTICULOS.DBF")
CREATE ARTICULOS
ENDIF
OPEN ARTICULOS
ARTICULOS -> ( SaveFields( aField , 1 ) ) //Esta funcion carga el valor en el Afield
actualizar(afield) //<- esta actualiza el valor
DEFINE WINDOW Win_1 ;
AT 0,0 ;
WIDTH 720 ;
HEIGHT 460 ;
TITLE 'Mantenimiento de Artículos' ;
MODAL
DEFINE TOOLBAR ToolBar_1 BUTTONSIZE 59,35 IMAGESIZE 20,20 FLAT BOR
pido los TEXTBOXGET y todo lo demas
y si es correcto y quiero grabar
IF Ok
ARTICULOS->(Grabar(afield)) //-->GRABAMOS EL REGISTRO
ENDIF
RETURN
// FUNCIONES
----------------------------------
--> PASA EL VALOR DEL REGISTRO INTRODUCIDO EN EL CONTROL AL ARRAY Y A SU VEZ SE GRABA
--> ESTA FUNCION CREO QUE SI QUE FUNCIONA.., LA HE COPIADO DE UN PROGRAMA "MyIW.prg".. MUCHAS GRACIAS.
--> PERO ESTA SIN PROBAR.
function Grabar (afield)
LOCAL i , ControlName , l
l := len (afield)
FOR i := 1 to l
ControlName := 'Control_' + Alltrim ( Str ( i ) )
aField [i]:= _GetValue ( ControlName , '_InputWindow' )
FieldPut( i, aField[i ]
NEXT i
return
-------------------------------------
-------------------------------------
// ESTA FUNCION ME LLEVA LOCO.
// ES PARA ASIGNAR LOS VALORES INCIALES A LOS DISTINTOS CONTROLES (TEXTBOX, ETC.) YA SEA
//INICIALMENTE O POR QUE EL USUARIO REALICE ALGUNA MOFICIACIÓN O FUERCE UN CAMBIO Y SEA NECESARIO
//ACTUALIZAR LOS VALORES...
//
// NO CONSIGO QUE FUNCIONE.
Function Actualizar(aField)
LOCAL N, CN
ARTICULOS->( dbGoTo ( Win_1.Grid_1.RecNo ) )
ARTICULOS-> ( SaveFields( aField , 1 ) )
cn:=""
FOR n=1 to LEN(AFIELD)
cn="control_"+str(n)
WIN_1.&CN.VALUE := AFIELD[N] <---- NO FUNCIONA. NO CONSIGO ASIGNA EL VALOR
NEXT
Win_1.Control_1.Value := ARTICULOS->CODIGO <---ESTA TAREA ES LA QUE QUIERO EVITAR!
Win_1.Control_2.Value := ARTICULOS->Tipo1 <--- TENGO QUE HACER ESTO 50 VECES !!!!!
Win_1.Control_3.Value := ARTICULOS->Tipo2
Win_1.Control_4.Value := ARTICULOS->Tipo3
Win_1.Control_5.Value := ARTICULOS->Tipo4
Win_1.Control_6.Value := ARTICULOS->Tipo5
Win_1.Control_7.Value := ARTICULOS->Tipo6
Win_1.Control_8.Value := ARTICULOS->Tipo7
Win_1.Control_9.Value := ARTICULOS->Tipo8
Win_1.Control_0.Value := ARTICULOS->Tipo9
Win_1.Control_11.Value := ARTICULOS->Tipo10
Win_1.Control_12.Value := ARTICULOS->Tipo11
Win_1.Control_13.Value := ARTICULOS->Tipo12
Win_1.Control_14.Value := ARTICULOS->Tipo13
Win_1.Control_15.Value := ARTICULOS->Tipo14
Win_1.Control_16.Value := ARTICULOS-> ..... y hasta 50
Return Nil
// $Category: Database funtions
// ----------------------------------------------------------------------------
// $Quick: Save all fields contents in an array
// ... S A R G A N T A N A S O F T ... clipper 5.2
// SaveFields( aData, nIni)
// nIni .. Valor n£merico. 0 carga, 1 inicializa
// Por defecto, el valor ser cero
proc SaveFields( aData, nIni )
local n
local nLen := FCount()
local aFtip[nLen]
local aFlon[nLen]
Default nIni := 0
AFields("",aFtip,aFlon,"")
ASize( aData, 0 )
for n = 1 to nLen
AAdd( aData, FieldGet( n ) )
IF nIni=1
DO Case
Case aFtip[n]="N"
STORE 0 TO aData[n]
Case aFtip[n]="C"
STORE SPACE(aFlon[n]) to aData[n]
Case aFtip[n]="D"
aData[n]=DATE()
Case aFtip[n]="L"
aData[n]=.f.
OTHERWISE
STORE SPACE(aFlon[n]) to aData[n]
ENDCASE
ENDIF
next
return
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no.
Re: Ayuda para asignar y tomar valores TEXTBOX
Hola Salinetas
Este ejemplo es minimalista, pero te pueda ayudar...
Este ejemplo es minimalista, pero te pueda ayudar...
Andrés González López
Desde Guadalajara, Jalisco. México.
Desde Guadalajara, Jalisco. México.
- SALINETAS24
- Posts: 667
- Joined: Tue Feb 27, 2018 3:06 am
- DBs Used: DBF
- Contact:
Re: Ayuda para asignar y tomar valores TEXTBOX
Muy bueno. Muchas gracias.
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no.