Mi primer programa en fivelinux (editor dbf )

Post Reply
benjiben143
Posts: 113
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Mi primer programa en fivelinux (editor dbf )

Post by benjiben143 »

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 _

la segunda parte sera,, abc, de los registros

en el codigo tengo varias condiciones dependiendo de _ contiene la base de datos ,, ya que no supe como meter _ 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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Mi primer programa en fivelinux (editor dbf )

Post by Antonio Linares »

Puedes mostrar algunas capturas de pantallas ? gracias :-)

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

Antonio Linares
www.fivetechsoft.com
benjiben143
Posts: 113
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Mi primer programa en fivelinux (editor dbf )

Post by benjiben143 »

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
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Mi primer programa en fivelinux (editor dbf )

Post by mastintin »

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 _

la segunda parte sera,, abc, de los registros

en el codigo tengo varias condiciones dependiendo de _ contiene la base de datos ,, ya que no supe como meter _ 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 _ de la estructura del dbf y guarda el resultado .
¿ Pedes ponernos aqui el código ?
Saludos.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Mi primer programa en fivelinux (editor dbf )

Post by Antonio Linares »

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
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Mi primer programa en fivelinux (editor dbf )

Post by mastintin »

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
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Mi primer programa en fivelinux (editor dbf )

Post by Antonio Linares »

Manuel,

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

Code: Select all

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

   @ 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

   if ! Empty( cAlias ) .and. lCopy
      APPEND FROM ( cAlias )
      oBrwNew:Refresh()
   endif  
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: Mi primer programa en fivelinux (editor dbf )

Post by mastintin »

ok.
Lo reviso cuando tenga algo de tiempo ( volver de vacaciones es la leche ) y lo añadimos a la version de mac.
Saludos.
benjiben143
Posts: 113
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: Mi primer programa en fivelinux (editor dbf )

Post by benjiben143 »

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
Post Reply