FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour XBrowse with ADT Free Table
Posts: 18
Joined: Wed Aug 16, 2017 05:38 AM
XBrowse with ADT Free Table
Posted: Thu Sep 07, 2017 08:55 AM
Guys,

Need guidance on retrieving Advantage Database table into xBrowse. I am using the following packages:
1. xHarbour10205_bcc58 from whosaway.com
2. bcc582 from whosaway.com
3. Advantage Database version 8.1

I have done the following so far:
    Downloaded ACE SDK ver 8.1 from Advantage Dev Zone. Copy ace32.dll, adsloc32.dll, axcws32.dll to c:\windows. Copy ace.h to fivewin include folder[/list:u]
      Built ace32.lib from the ACE SDK Ver 8.1 using this command implib ace32.lib ace32.dll. Copy ace32.lib to xHarbour lib folder [/list:u]
        Downloaded the xHarbour10205 contrib folder from whosaway.com. Compile ads1.c adsfunc.c and adsmgmnt.c. Built rddads.lib using this command tlib rddads.lib +ads1.obj +adsfunc.obj +adsmgmnt.obj. Copy rddads.lib to xHarbour lib folder.[/list:u]

          Copy ads.ch, adsexternal.ch, rddads.ch, ace.h to xHarbour include folder.[/list:u]

          I compiled my program successfully but when I run it, it fails with exception:
          Error BASE/1001 Undefined function: ADSKEYNO

          This is my program:
          Code (fw): Select all Collapse
          #include "fivewin.ch"
          #include "xbrowse.ch"
          #include "ads.ch"
          
          REQUEST ADS
          EXTERNAL AdsKeyCount, AdsGetRelKeyPos, AdsSetRelKeyPos
          
          static oWndMain, oWndBias
          
          memvar cXK
          
          #DEFINE cDBPathDir          CurDrive()+":\"+CurDir()+"\"
          #DEFINE cBiasSpecTable      "TL_TirN.Adt"
          
          
          //--BEG - Main() ---------------------------------------------------------------------------
          
          function Main()
          
              local oFont
              private cXK := "BRW"
          
              Init()
          
              DEFINE FONT oFont NAME "Arial" SIZE 0, -12
          
              DEFINE WINDOW oWndMain TITLE "Production 3 Result" ;
                  MDI MENU BuildMenu() VSCROLL HSCROLL
          
              DEFINE MSGBAR PROMPT "Production 3 Application" ;
                  OF oWndMain KEYBOARD DATE TIME
          
              
          
              ACTIVATE WINDOW oWndMain MAXIMIZED VALID MsgYesNo( "Exit Application?" )
          
              DisplayBiasProduct()
          
              RELEASE oFont
          
          return nil
          
          //-- END - Main() ----------------------------------------------------------------------------
          
          //-- BEG - Init() ----------------------------------------------------------------------------
          function Init()
          
              SET EXACT ON
              SET AUTOPEN ON
              SET EPOCH TO ( YEAR( DATE() ) - 50 )
              SET DATE FORMAT 'DD-MM-YY'  // Indonesia
              SET 3DLOOK ON
              SET DIRCASE  MIXED
              SET FILECASE MIXED
          
              RDDSETDEFAULT( "ADS" )
              AdsSetServerType( ADS_LOCAL_SERVER )
              AdsSetFileType( ADS_ADT )
              AdsLocking( .F. )
              AdsRightsCheck( .F. )
              Set( _SET_OPTIMIZE, .T. )
          
          return nil
          //-- END - Init() ----------------------------------------------------------------------------
          
          //-- BEG - BuildMenu() ----------------------------------------------------------------------------
          
          //function BuildMenu( oWndMain )
          function BuildMenu()
              
              local oMenu
          
              MENU oMenu
          
                  MENUITEM "View" 
                      MENU
                          MENUITEM "Product Code - Bias" ;
                              ACTION DisplayBiasProduct()
                  ENDMENU
          
                  oMenu:AddMdi()
          
              ENDMENU
              
          return oMenu
          
          //-- END - BuildMenu() ----------------------------------------------------------------------------
          
          
          //-- BEG - getTableName( inDBPathDir ) ----------------------------------------------------------------------------
          function getTableName( inDBPathDir )
          
              local cTblName
              local aTokens := {}
              local numTokens
          
              cTblName := UPPER( inDBPathDir )        //Convert to Upper Case
              cTblName := StrTran( cTblName, ".ADT", "")      //Remove .ADT from the inDBPathDir 
              aTokens := HB_ATokens( cTblName, "\", .F., .F.)
              numTokens := LEN( aTokens )
          
          return aTokens[ numTokens ]
          //-- END - getTableName( inDBPathDir ) ----------------------------------------------------------------------------
          
          //-- BEG - DisplayBiasProduct() ----------------------------------------------------------------------------
          function DisplayBiasProduct()
              
              local oBrw, oFont
              local cDBPathFileName := cDBPathDir + cBiasSpecTable
              local cTblName := getTableName( cDBPathFileName )
              local cPasswd := LOWER( cTblName + ALLTRIM( STR( LEN( cTblName ) ) ) )
              local cAlias := cTblName
          
              if oWndBias == nil
          
                  /* DBUSEAREA( [<lNewArea>], [<cDriver>], <cName>, [<xcAlias>], [<lShared>], [<lReadonly>]) */
                  DbUseArea( .T., , cDBPathFileName, cAlias, .T. , .T. )
          
                  //Decrypt the table
                  if  ( (cAlias)->( AdsIsTableEncrypted() ) ) .AND. (cAlias)->( AdsEnableEncryption(cPasswd) ) == 0 
                          ? "Successful Decrypting Table"
                  else
                          //? "Error Decrypting Table"
                  endif
          
                  DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-21
          
                  DEFINE WINDOW oWndBias FROM 0, 0 TO 40, 90 MDICHILD OF oWndMain TITLE "Bias Tire Specification" 
          
          
                  @ 0, 0 XBROWSE oBrw ;
                      FONT oFont ;
                      FIELDS (cAlias)->SPKCD, ;
                              (cAlias)->PBCD, ;
                              (cAlias)->SIZE, ;
                              (cAlias)->INCH, ;
                              (cAlias)->BRND, ;
                              IF( cXK == 'BRW' , ;                
                                  IF( (SUBSTR((cAlias)->SPKCD,2,1)$'BDS'), ;
                                      LEFT((cAlias)->SPKCD,1)+(cAlias)->PTNX+' '+(cAlias)->PTRN, ;
                                      'S'+(cAlias)->PTNX+' '+(cAlias)->PTRN), ;
                                      (cAlias)->PTNX+(cAlias)->PTRN ;
                                 ), ;
                              (cAlias)->PR ;
                      HEADERS "Spec Code", ;
                              "Ver", ;
                              "Tire Size", ;
                              "Inch", ;
                              "Brand", ;
                              "PTRN", ;
                              "PR";
                      AUTOSORT ;
                      OF oWndBias ;
                      ALIAS (cAlias)
          
                  oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW
                  oBrw:CreateFromCode()
                  //oBrw:SetFocus()
                  oWndBias:oClient := oBrw
                  oWndBias:Refresh()
          
                  ACTIVATE WINDOW oWndBias VALID( (cAlias)->( DbCloseArea() ), oBrw:cAlias := nil, oWndBias := nil, .T. )
          
                  RELEASE oFont
              
              else
                  
                  oWndBias:SetFocus()
              
              endif
          
          return nil
          //-- END - DisplayBiasProduct() ----------------------------------------------------------------------------


          This is my database table:
          https://drive.google.com/open?id=0B2zQUQq-PXH1VVRfOTJMY2xRS3M

          This is my program:
          https://drive.google.com/open?id=0B2zQUQq-PXH1MFpXcmZJLVRkSU0

          Could anyone please guide me on how to proceed? Thank you.



          Teddy
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: XBrowse with ADT Free Table
Posted: Thu Sep 07, 2017 09:45 AM

Please add ADSKEYNO also to the list of EXTERNAL symbols

Regards



G. N. Rao.

Hyderabad, India
Posts: 18
Joined: Wed Aug 16, 2017 05:38 AM
Re: XBrowse with ADT Free Table
Posted: Thu Sep 07, 2017 09:59 AM
nageswaragunupudi wrote:Please add ADSKEYNO also to the list of EXTERNAL symbols


Nages,

Alright. That solves the AdsKeyNo error.

However, when the xbrowse window pops up, the application crashes giving no detail information. It just says that the xxx.exe has stopped working.

How do I debug this? Thanks.
Posts: 18
Joined: Wed Aug 16, 2017 05:38 AM
Re: XBrowse with ADT Free Table
Posted: Fri Sep 08, 2017 04:37 AM

Try changing the output using browse() instead of xbrowse and I find out that the browse window display empty records. This may be why the app crash when I display it using xbrowse.

The table is not empty. There are several records in the table.

Is there something wrong with the rddads.lib that I built, which is causing no records being pulled from the table? Thanks.

Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: XBrowse with ADT Free Table
Posted: Fri Sep 08, 2017 01:25 PM
Hola,

I only changed the adt file name and the password

Code (fw): Select all Collapse
......
    /* DBUSEAREA( [<lNewArea>], [<cDriver>], <cName>, [<xcAlias>], [<lShared>], [<lReadonly>]) */
        //DbUseArea( .T., , cDBPathFileName, cAlias, .T. , .T. )
      DbUseArea( .T., , "TL_TirN", cAlias, .T. , .T. )

        //Decrypt the table
        if  ( (cAlias)->( AdsIsTableEncrypted() ) ) .AND. (cAlias)->( AdsEnableEncryption("tl_tirn7") ) == 0 
                ? "Successful Decrypting Table"
        else
                //? "Error Decrypting Table"
        endif
......


and I can see the xBrowse with the table's contents

saludos

Marcelo
Posts: 18
Joined: Wed Aug 16, 2017 05:38 AM
Re: XBrowse with ADT Free Table
Posted: Sat Sep 09, 2017 01:37 AM
Marcelo Via Giglio wrote:Hola,

I only changed the adt file name and the password

Code (fw): Select all Collapse
......
    /* DBUSEAREA( [<lNewArea>], [<cDriver>], <cName>, [<xcAlias>], [<lShared>], [<lReadonly>]) */
        //DbUseArea( .T., , cDBPathFileName, cAlias, .T. , .T. )
      DbUseArea( .T., , "TL_TirN", cAlias, .T. , .T. )

        //Decrypt the table
        if  ( (cAlias)->( AdsIsTableEncrypted() ) ) .AND. (cAlias)->( AdsEnableEncryption("tl_tirn7") ) == 0 
                ? "Successful Decrypting Table"
        else
                //? "Error Decrypting Table"
        endif
......


and I can see the xBrowse with the table's contents

saludos

Marcelo


Hi Marcelo,

Thanks for your effort and suggestion but I am still getting nothing on my side. It works fine if I use DBF tables but it is not showing anything when I use ADT tables. That's why I assume there might be something wrong with the configuration for RDDADS in my environment.

Any suggestion on this matter? Thanks.
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: XBrowse with ADT Free Table
Posted: Sat Sep 09, 2017 01:45 AM

Hola,

how I said, I only change the table's name (directly puting the name) and put directly the password, and I could saw the browse with the data. Maybe you need to review the DLL version and the ACE32 version, all need to be the same

suerte

Marcelo

Posts: 18
Joined: Wed Aug 16, 2017 05:38 AM
Re: XBrowse with ADT Free Table
Posted: Sat Sep 09, 2017 02:02 AM
Marcelo Via Giglio wrote:Hola,

how I said, I only change the table's name (directly puting the name) and put directly the password, and I could saw the browse with the data. Maybe you need to review the DLL version and the ACE32 version, all need to be the same

suerte

Marcelo


ace32.dll, adsloc32.dll, and axcws32.dll are from AceSDK ver 8.1.
ace32.lib was built from ace32.dll of AceSDK Ver 8.1
rddads.lib was built from ads1.c, adsfunc.c, and adsmgmnt.c of xHarbour 1.2.3 rev 10205 contrib folder.

Do I need to find a specific previous version of xHarbour contrib rddads folder?
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: XBrowse with ADT Free Table
Posted: Sat Sep 09, 2017 03:15 AM

Dear Teddy,

I'm using dlls and libraries from ADS v 10, try to use them

best regards

Marcelo

Continue the discussion