Sample with xBrowse, Fastedit and recordset

Sample with xBrowse, Fastedit and recordset

Postby Armando » Fri Dec 09, 2011 3:33 am

Dear friends:

I'm looking for a sample using xBrowse with cell edit and recordset.
I have looked for in the forum without success.

Thanks a lot for your sample
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
User avatar
Armando
 
Posts: 3218
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Sample with xBrowse, Fastedit and recordset

Postby Rick Lipkin » Fri Dec 09, 2011 2:40 pm

Armando

Consider this code .. it does a bit more than you asked .. notice FASTEDIT and AEVAL( oBrw:aCols, { |o| o:nEditType := EDIT_GET } )

Rick Lipkin

Code: Select all  Expand view

// AccessDB.prg
// creating an access database from code
// creating an xbrowse from ADO
// allowing edit each cell

#include "FiveWin.ch"
#include "Xbrowse.ch"

STATIC lOK

//-------------
Func Main()

Local catNewDB,xProvider,xConnect,cFile,aDir,dExe,cDefa,mStart
Local oCn,cSql,oErr,oRsUser,cLOGIN,Saying
Local cTitle,oWnd1,oBrw,oCol,nYear


lOK := .F.

//-- get timestamp on .exe //

cFILE := GetModuleFileName( GetInstance() )
aDIR  := DIRECTORY( cFILE )
dEXE  := aDIR[1] [3]

// where .exe started from is default directory //

mSTART := RAT( "\", cFILE )
cDEFA  := SUBSTR(cFILE,1,mSTART-1)

aDIR := NIL
SET DEFA to ( cDEFA )

SET DELETED on
SET CENTURY on
SET 3DLOOK on

nYEAR := ( year( DATE() )-30 )
SET EPOCH to ( nYEAR )

Ferase( cDefa+"
\Rick.mdb" )

xPROVIDER := "
Microsoft.Jet.OLEDB.4.0"
xSOURCE   := cDEFA+"
\Rick.mdb"
xPASSWORD := "
dec2011"

// create the adox object
Try
   catNewDB := CreateObject("
ADOX.Catalog")
Catch
   MsgInfo( "
Could not Create ADOX object")
   Return(.f.)
End try

// create the table Rick.mdb
Try
  catNewDB:Create('Provider='+xProvider+';Data Source='+xSource+';Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password='+xPASSWORD )
Catch
  MsgInfo( "
Could not create the table "+xSource )
  Return(.f.)
End Try


// global connection string
xCONNECT := 'Provider='+xPROVIDER+';Data Source='+xSOURCE+';Jet OLEDB:Database Password='+xPASSWORD

Try
  oCn  := CREATEOBJECT( "
ADODB.Connection" )
Catch
  MsgInfo( "
Could not create the ADO object for connection")
End Try

TRY
   oCn:Open( xCONNECT )
CATCH oErr
  MsgInfo( "
Could not open a Connection to Database "+xSource )
  RETURN(.F.)
END TRY


cSQL := "
CREATE TABLE USERINFO"
cSQL += "
( "
cSQL += "
[USEREID] char(18) NOT NULL, "
cSQL += "
[USERID] char(8) NULL, "
cSQL += "
[READONLY] char(1) NULL, "
cSQL += "
[WRITEONLY] char(1) NULL, "
cSQL += "
[SUPER] char(1) NULL, "
cSQL += "
[LASTLOG] datetime NULL, "
cSQL += "
[CREATEDATE] datetime NULL, "
cSQL += "
[PASSWORD] char(10) NULL, "
cSQL += "
CONSTRAINT PK_USERINFO PRIMARY KEY ( USEREID )"
cSQL += "
)"

// create the table Userinfo
// with primary key

Try
   oCn:Execute( cSQL )
Catch
   MsgInfo( "
Table USERINFO Failed" )
   Return(.f.)
End try

oCn:Close()
oCn := nil

cLOGIN := UPPER( WNetGetuser() )+space(8) // fivewin
cLOGIN := SUBSTR(cLOGIN,1,8)

// open the Userinfo table record set
// append the first record
// could have also used a connection and the INSERT command

oRsUser := TOleAuto():New( "
ADODB.Recordset" )
oRsUser:CursorType     := 1        // opendkeyset
oRsUser:CursorLocation := 3        // local cache
oRsUser:LockType       := 3        // lockoportunistic

// check for very first user

cSQL := "
SELECT * FROM USERINFO"
TRY
   oRsUser:Open( cSQL, xCONNECT )
CATCH oErr
   MsgInfo( "
Error in Opening USERINFO table here" )
   RETURN(.F.)
END TRY

If oRsUser:eof
   oRsUser:AddNew()

   oRsUser:Fields("
UserEid"):Value    := "011111111111111111"
   oRsUser:Fields("
UserId"):Value     := cLOGIN
   oRsUser:Fields("
ReadOnly"):Value   := "Y"
   oRsUser:Fields("
WriteOnly"):Value  := "Y"
   oRsUser:Fields("
Super"):Value      := "Y"
   oRsUser:Fields("
CreateDate"):Value := dtoc(DATE())+" "+time()
   oRsUser:Fields("
LastLog"):Value    := dtoc(DATE())+" "+time()
   oRsUser:Fields("
PassWord"):Value   := "ADMIN"

   oRsUser:Update()
Endif

cTITLE := "
User Information Browse"

lOK := .F.

DEFINE WINDOW oWnd1                        ;
      FROM 5,5 to 30,75                    ;
      TITLE cTITLE                         ;

@ 0, 0 xBROWSE oBrw of oWnd1               ;
       RECORDSET oRsUser                   ;
       COLUMNS "
USERID",                   ;
               "
READONLY",                 ;
               "
WRITEONLY",                ;
               "
SUPER",                    ;
               "
CREATEDATE",               ;
               "
LASTLOG"                   ;
       COLSIZES 80,80,80,80,80,80          ;
       HEADERS "
UserId",                   ;
               "
Read",                     ;
               "
Write",                    ;
               "
Super",                    ;
               "
Created",                  ;
               "
LastLog"                   ;
       AUTOSORT AUTOCOLS FASTEDIT LINES CELL    // use fastedit if you want to edit cells

       oWnd1:oClient := oBrw

       oBrw:lHScroll := .f. // turn off horiz scroll bar

       oBrw:lFooter   := .t.
       oCol           := oBrw:aCols[ 1 ]
       oCol:bFooter   := { || Ltrim( Str( oBrw:KeyNo() ) ) + "
/ " + LTrim( Str( oBrw:KeyCount() ) ) }
       oCol:cHeader   := "
UserId"
       oBrw:bChange   := { || oCol:RefreshFooter() }

       // allow edit of each field //
       AEVAL( oBrw:aCols, { |o| o:nEditType := EDIT_GET } )

       oBrw:CreateFromCode()

ACTIVATE WINDOW oWND1 ;
         ON INIT( oBrw:SetFocus(), .F. ) ;
         VALID ( IIF( !lOK, UserClose(.T.,oWnd1,oRsUser ), .F. ))

Return(nil)

//-------------------------------
Static FUNCTION UserClose( lCLEAN,oWnd1,oRsUser )

LOCAL lOK1

cDEFA := SET(7)

IF lCLEAN = .T.
   lOK  := .T.    // static close flag
   lOK1 := lOK  

   try
      oRsUser:CLose()
   catch
   end try

   oWnd1:End()

ENDIF

RETURN( lOK1 )

 // -- end
User avatar
Rick Lipkin
 
Posts: 2665
Joined: Fri Oct 07, 2005 1:50 pm
Location: Columbia, South Carolina USA

Re: Sample with xBrowse, Fastedit and recordset

Postby Armando » Fri Dec 09, 2011 2:51 pm

Rick:

Thanks a lot for your sample, I will try it.

Regards
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
User avatar
Armando
 
Posts: 3218
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Sample with xBrowse, Fastedit and recordset

Postby nageswaragunupudi » Sat Dec 10, 2011 1:46 pm

There are samples in the fwh\samples folder. In particular testxbr3.prg gives samples for different kinds of datasources like RDD, Array, RecSet and Trees.

Here is a very simple sample for ADO RecordSet
Code: Select all  Expand view
#include "FiveWin.Ch"
#include "xbrowse.ch"

//----------------------------------------------------------------------------//

function Main()

   local oRs, oDlg, oBrw, oFont

   XBrNumFormat( 'E', .t. )

   oRs   := OpenRecordSet()
   if oRs == nil
      ? 'Open fail'
      QUIT
   endif

   DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-14
   DEFINE DIALOG oDlg SIZE 700,400 PIXEL FONT oFont

   @ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
      COLUMNS 'First', 'City', 'State', 'Salary' ;
      DATASOURCE oRs ;
      AUTOSORT FASTEDIT CELL LINES NOBORDER

   WITH OBJECT oBrw
      :nEditTypes    := EDIT_GET
      :nStretchCol   := 1
      //
      :CreateFromCode()
   END

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

return nil

//----------------------------------------------------------------------------//

static function OpenRecordset()

   local oCn, cStr, oRs

   cStr     :=  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ;
                "c:\fwh\samples\xbrtest.mdb;User Id=admin;Password=;"

   if ( oCn := FW_OpenAdoConnection( cStr ) ) != nil
      oRs   := FW_OpenRecordSet( oCn, "CUSTOMER" )
   endif

return oRs

//----------------------------------------------------------------------------//
 

XBrowse automatically takes care of formatting, editing and saving to the recordset.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10632
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Sample with xBrowse, Fastedit and recordset

Postby Armando » Sat Dec 10, 2011 6:33 pm

Mr. Rao:

Thank your for your advise and excelent sample.

With best regards
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
User avatar
Armando
 
Posts: 3218
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 80 guests