Mi primer programa en fivelinux (editor dbf )

Mi primer programa en fivelinux (editor dbf )

Postby benjiben143 » Tue Jun 26, 2012 5:10 pm

Hola buen dias ,, es mi primer programa en fivelinux
es un modulo que muestra x base de datos en dbf

por lo pronto la primera parte tiene muestra la base de datos ,,, altas , bajas , cambios estructura , genera un archivo respaldo.dbf que es el que contiene los cambios

la segunda parte sera,, abc, de los registros

en el codigo tengo varias condiciones dependiendo de cuantos campos contiene la base de datos ,, ya que no supe como meter los campos de manera directa jjijiji, hay que modificar la clase o saber como meterlos en fivewin los metos en un arreglo y listo .

saludos ,,,

esta en prueba por las validaciones .. si tiene alguna modificacion o mejora pues sobres , esta coriendo en ubunto 12.04, debe de correr en las otras versiones

http://www.eleben.com.mx/primer.prg
Last edited by benjiben143 on Wed Jun 27, 2012 10:05 pm, edited 2 times in total.
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
benjiben143
 
Posts: 116
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Mi primer programa en fivelinux (editor dbf )

Postby Antonio Linares » Tue Jun 26, 2012 6:56 pm

Puedes mostrar algunas capturas de pantallas ? gracias :-)

Se parece al FiveDBU que hemos publicado en estos foros ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42117
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Mi primer programa en fivelinux (editor dbf )

Postby benjiben143 » Tue Jun 26, 2012 9:15 pm

Hola antonio buenas tardes

la estructura de las modificacion es de un modulo hecho en clipper desde hace tiempo , adapatado a fivelinux , se puede en fivemac y en fivewin no mas cambiando el browse .. ( tengo tambien un modulo que sincroniza las dbf es es muy bueno para las actualizaciones aver si lo encuentro esta en el baul de los recuerdos de inicio )


el codigo se puede adaptar mas pequeño , falta cambiar y adaptar la clase browse para no poner tantas condiciones


con fivewin uso aunque usted no lo crea use el mfoxplus el viejito en modo consola se me hace muy practico
y con el linux no lo tiene pues lo adapte , y si vi el fivedbu se me hace a todo dar ,, muy completo y excelente


saludos





http://www.publicarfotos.com/Fotos-moddbu-f18570-a3
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
benjiben143
 
Posts: 116
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Mi primer programa en fivelinux (editor dbf )

Postby mastintin » Thu Jul 05, 2012 9:42 am

benjiben143 wrote:Hola buen dias ,, es mi primer programa en fivelinux
es un modulo que muestra x base de datos en dbf

por lo pronto la primera parte tiene muestra la base de datos ,,, altas , bajas , cambios estructura , genera un archivo respaldo.dbf que es el que contiene los cambios

la segunda parte sera,, abc, de los registros

en el codigo tengo varias condiciones dependiendo de cuantos campos contiene la base de datos ,, ya que no supe como meter los campos de manera directa jjijiji, hay que modificar la clase o saber como meterlos en fivewin los metos en un arreglo y listo .

saludos ,,,

esta en prueba por las validaciones .. si tiene alguna modificacion o mejora pues sobres , esta coriendo en ubunto 12.04, debe de correr en las otras versiones

http://www.eleben.com.mx/primer.prg


no puedo descargar el prg . Estoy interesado en el modulo que realiza los cambios de la estructura del dbf y guarda el resultado .
¿ Pedes ponernos aqui el código ?
Saludos.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Mi primer programa en fivelinux (editor dbf )

Postby Antonio Linares » Thu Jul 05, 2012 10:11 am

Manuel,

En FiveDBU está implementado el cambio de estructura, lo que hacemos es crear una nueva DBF para evitar problemas :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42117
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Mi primer programa en fivelinux (editor dbf )

Postby mastintin » Thu Jul 05, 2012 1:33 pm

Antonio Linares wrote:Manuel,

En FiveDBU está implementado el cambio de estructura, lo que hacemos es crear una nueva DBF para evitar problemas :-)

No lo he visto :-( . ¿ Se mantienen los datos dentro de la base de datos en la mendida de lo posible , como hace el gestor de advantage ?
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Mi primer programa en fivelinux (editor dbf )

Postby Antonio Linares » Thu Jul 05, 2012 3:17 pm

Manuel,

Si. Se crea una nueva DBF con la estructura modificada y luego se le añaden los registros:

Code: Select all  Expand view  RUN
function New( cAlias )
 
   local oDlg, oGet, oBrw, oBtn, cTitle, cNewAlias, oBrwNew, lCopy := .F.
   local cFieldName := Space( 10 ), cType := "Character", nLen := 10, nDec := 0
   local aFields := { Array( 4 ) }, cDbfName := Space( 8 ), aTemp
   local oLen, oDec, aType := { "Character", "Number", "Date", "Logical", "Memo" }
   local bChange := {|| If( cType == "Character", (nLen := 10, nDec := 0, oDec:Disable() ),),;
                        If( cType == "Number",    (nLen := 10, nDec := 0, oDec:Enable()  ),),;
                        If( cType == "Date",      (nLen := 8,  nDec := 0, oDec:Disable() ),),;
                        If( cType == "Logical",   (nLen := 1,  nDec := 0, oDec:Disable() ),),;
                        If( cType == "Memo",      (nLen := 10, nDec := 0, oDec:Disable() ),),;
                        oDlg:Update() }
   local bEdit := {|| IF ( !Empty (aFields[1,1]) ,;
                      (oBtn:Enable (),;
                       cFieldName := aFields[oBrw:nArrayAt,1] ,;
                       cType := aFields[oBrw:nArrayAt,2] ,;
                       cType := aType[ aScan(aType, {|x| Left(x,1) = cType} )],;
                       Eval (bChange) ,;
                       nLen := aFields[oBrw:nArrayAt,3] ,;
                       nDec := aFields[oBrw:nArrayAt,4] ,;
                       oGet:SetPos( 0 ),;
                       oGet:SetFocus(),;
                       oDlg:Update() ) ,) ;
                     }
   local bSave := {|| oBtn:Disable (),;
                      aFields[oBrw:nArrayAt,1] := cFieldname,;
                      aFields[oBrw:nArrayAt,2] := Left (cType,1),;
                      aFields[oBrw:nArrayAt,3] := nLen,;
                      aFields[oBrw:nArrayAt,4] := nDec,;
                      oBrw:SetArray (aFields),;
                      cFieldName := Space( 10 ),;
                      Eval (bChange) ,;
                      oDlg:Update() ,;
                      oGet:SetPos( 0 ),;
                      oGet:SetFocus(),;
                      oBrw:GoBottom();
                      }
 
   if ! Empty( cAlias )
      aFields = ( cAlias )->( DbStruct() )
      cTitle = "Modify DBF struct"
   else
      cTitle = "DBF builder"
   endif      
 
   DEFINE DIALOG oDlg TITLE cTitle SIZE 415, 400
 
   @ 0.5,  2 SAY "Field Name" OF oDlg SIZE 40, 8
   @ 0.5, 10 SAY "Type" OF oDlg SIZE 40, 8
   @ 0.5, 17 SAY "Len" OF oDlg SIZE 40, 8
   @ 0.5, 22 SAY "Dec" OF oDlg SIZE 20, 8
 
   @ 1.4, 1 GET oGet VAR cFieldName PICTURE "!!!!!!!!!!" OF oDlg SIZE 41, 11 UPDATE
 
   @ 1.3, 6.5 COMBOBOX cType ITEMS aType ;
      OF oDlg ON CHANGE Eval (bChange) UPDATE
 
   @ 1.4, 11.9 GET oLen VAR nLen PICTURE "999" OF oDlg SIZE 25, 11 UPDATE
 
   @ 1.4, 15.4 GET oDec VAR nDec PICTURE "999" OF oDlg SIZE 25, 11 UPDATE
 
   @ 0.9, 26 BUTTON "&Add" OF oDlg SIZE 45, 13 ;
      ACTION AddField( @aFields, @cFieldName, @cType, @nLen, @nDec, oGet, oBrw )
 
   @ 2.4, 26 BUTTON oBtn PROMPT "&Edit" OF oDlg SIZE 45, 13 ;
     ACTION Eval (bSave)
 
   @ 3.4, 26 BUTTON "&Delete" OF oDlg SIZE 45, 13 ;
     ACTION DelField( @aFields, @cFieldName, oGet, oBrw )
 
   @ 4.4, 26 BUTTON "Move &Up" OF oDlg SIZE 45, 13 ;
      ACTION If( oBrw:nArrayAt > 1,;
                 ( aTemp := aFields[ oBrw:nArrayAt ],;
                   aFields[ oBrw:nArrayAt ] := aFields[ oBrw:nArrayAt - 1 ],;
                   aFields[ oBrw:nArrayAt - 1 ] := aTemp,;
                   oBrw:GoUp() ),)
 
   @ 5.4, 26 BUTTON "Move D&own" OF oDlg SIZE 45, 13 ;
      ACTION If( oBrw:nArrayAt < Len( aFields ),;
                 ( aTemp := aFields[ oBrw:nArrayAt ],;
                   aFields[ oBrw:nArrayAt ] := aFields[ oBrw:nArrayAt + 1 ],;
                   aFields[ oBrw:nArrayAt + 1 ] := aTemp,;
                   oBrw:GoDown() ),)
 
   @ 6.4, 26 BUTTON "&Cancel" OF oDlg SIZE 45, 13 ;
      ACTION oDlg:End()
 
   @ 2.2, 2 SAY "Fields" OF oDlg SIZE 40, 8
 
   @ 3.2, 1 XBROWSE oBrw ARRAY aFields AUTOCOLS ;
      HEADERS "Name", "Type", "Len", "Dec" ;
      COLSIZES 90, 55, 40, 40 ;
      SIZE 140, 130 OF oDlg ;
      ON DBLCLICK Eval (bEdit)
 
   oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW
   oBrw:bClrStd = { || If( oBrw:KeyNo() % 2 == 0, ;
                         { CLR_BLACK, RGB( 198, 255, 198 ) }, ;
                         { CLR_BLACK, RGB( 232, 255, 232 ) } ) }
   oBrw:bClrSel = { || { CLR_WHITE, RGB( 0x33, 0x66, 0xCC ) } }
   oBrw:SetColor( CLR_BLACK, RGB( 232, 255, 232 ) )
   oBrw:CreateFromCode()
 
   @ 12.1, 2 SAY "DBF Name:" OF oDlg SIZE 30, 8
 
   if ! Empty( cAlias )
      cDbfName = cGetNewAlias( cAlias )
   endif  
 
   @ 14, 6 GET cDbfName PICTURE "!!!!!!!!!!!!" OF oDlg SIZE 100, 11
 
   @ 10, 26 BUTTON If( Empty( cAlias ), "&Create", "&Save" ) OF oDlg SIZE 45, 13 ;
      ACTION ( If( ! Empty( cDbfName ) .and. Len( aFields ) > 0,;
          DbCreate( AllTrim( cDbfName ), aFields ),), oDlg:End(),;
          lCopy := .T.,;
          oBrwNew := Open( hb_CurDrive() + ":\" + CurDir() + "\" + AllTrim( cDbfName ) ) )
 
   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT ( Eval ( bChange ), oBtn:Disable() ) ;
      VALID ! GETKEYSTATE( VK_ESCAPE )
 
   if ! Empty( cAlias ) .and. lCopy
      APPEND FROM ( cAlias )
      oBrwNew:Refresh()
   endif  
 
return nil


La clave está en que si lCopy es .T. entonces:
Code: Select all  Expand view  RUN
  @ 10, 26 BUTTON If( Empty( cAlias ), "&Create", "&Save" ) OF oDlg SIZE 45, 13 ;
      ACTION ( If( ! Empty( cDbfName ) .and. Len( aFields ) > 0,;
          DbCreate( AllTrim( cDbfName ), aFields ),), oDlg:End(),;
          lCopy := .T.,;
          oBrwNew := Open( hb_CurDrive() + ":\" + CurDir() + "\" + AllTrim( cDbfName ) ) )

Code: Select all  Expand view  RUN
  if ! Empty( cAlias ) .and. lCopy
      APPEND FROM ( cAlias )
      oBrwNew:Refresh()
   endif  
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42117
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Mi primer programa en fivelinux (editor dbf )

Postby mastintin » Thu Jul 05, 2012 5:06 pm

ok.
Lo reviso cuando tenga algo de tiempo ( volver de vacaciones es la leche ) y lo añadimos a la version de mac.
Saludos.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Mi primer programa en fivelinux (editor dbf )

Postby benjiben143 » Thu Jul 05, 2012 6:16 pm

hola buen dia...

aque correo te lo mando,,,,, ya que ahorita ta fallando el servidor donde lo tengo guardado ( estaba ya esta funcionando lo puede bajar)


tambien este codigo,,, genera un archivo de respaldo donde guarda toda la informacion


saludos
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
benjiben143
 
Posts: 116
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico


Return to FiveLinux / FiveDroid (Android)

Who is online

Users browsing this forum: No registered users and 1 guest