Page 2 of 3

Re: Advantage Database Server

PostPosted: Wed Jan 19, 2022 7:31 pm
by TimStone
Dutch,

Yes I can access to generate a license, or increase the number of users. However, is it fair to sell something to my clients that is no longer supported, and has no development team to respond to changes in the Windows OS that Microsoft may initiate ?

It has happened before when they had support staff, and Microsoft networking could easily change once again in a future Windows update. Then the money people spent for ADS would be wasted, and they would be immediately inoperable ( except in peer to peer mode ).

If my rep responded to the questions I would be more comfortable, but to simply ignore my repeated emails suggests they are not actively involved, and that is not fair to my clients.

It is not about those who are running ADS now and will not need to expand. It's about those who need to spend money now to buy an initial license, or to expand a license. Is it fair to sell them something that could timeout in a year or two ?

Tim

Re: Advantage Database Server

PostPosted: Thu Jan 20, 2022 8:49 am
by dutch
Dear Tim,

I got your point now. Because I use ADS V.9 and don't update new version. I can handle this version without upgrade need until now.
TimStone wrote:Dutch,

Yes I can access to generate a license, or increase the number of users. However, is it fair to sell something to my clients that is no longer supported, and has no development team to respond to changes in the Windows OS that Microsoft may initiate ?

It has happened before when they had support staff, and Microsoft networking could easily change once again in a future Windows update. Then the money people spent for ADS would be wasted, and they would be immediately inoperable ( except in peer to peer mode ).

If my rep responded to the questions I would be more comfortable, but to simply ignore my repeated emails suggests they are not actively involved, and that is not fair to my clients.

It is not about those who are running ADS now and will not need to expand. It's about those who need to spend money now to buy an initial license, or to expand a license. Is it fair to sell them something that could timeout in a year or two ?

Tim

Re: Advantage Database Server

PostPosted: Thu Jan 20, 2022 2:23 pm
by wilsongamboa
Sad Sad news
in my case I use ADS server for several years my product are 100% ADS server and we are satisfy with ADS SERVER
we have instalations with ads 7, 8, 9, 10, 11, 12 SERVER on windows 2008, 2012, 2016, 2019 servers great product !!
It seems soon or later my bussines will gone, too much extensive and complex to trying to move to SQL !!
In our situation are hundreds of programers !!
We need a producto like sqlrdd to conversion to SQL and in the future take parts of the code and passing to SQL with optimizing queries
someone Know such type of product ?
Excuseme my bad English
we probably would be a group of programers to pay such development to a team or Core programers , we realy need this !!
NOTE : WE ONLY USE Free tables and driver ADSNTX ( no need more ever )

Re: Advantage Database Server

PostPosted: Thu Jan 20, 2022 3:40 pm
by AHF
Anyone tried ADORDD ?
It is the only way to go to SQL keeping exactly the same code.

Re: Advantage Database Server

PostPosted: Thu Jan 20, 2022 6:14 pm
by wilsongamboa
Antonio we need this but never tried
regards
Wilson

Re: Advantage Database Server

PostPosted: Fri Jan 21, 2022 7:55 am
by Jimmy
hi,

there are RDD for MySQL and PostgreSQL but it need OOP Syntax is like using a Db-Server or ADO.

Alaska have made PgDBE to "simulate" ISAM Style like SKIP or GOTO ... SEEK
they want to use it instead of ADS :roll:

but PgDBE Concept of "Index" is very strange as it use "internal" FIELD(s) to hold Value of IndexKey()
so when "edit" a Record you need to update "internal" Index FIELD(s) (done only with PgDBE)

---

ADS can be used with xBase ISAM Syntax. for SQL you need a CLASS to "simulate" ISAM Style.

i "think" we need a *.CH to "translate" xBase Command to OOP-Syntax
Code: Select all  Expand view
#command  SKIP               =>  o:SQLSkip(1)
#command  SKIP <n>           =>  o:SQLSkip(<n>)


than we write a CLASS and
Code: Select all  Expand view
Method SQLSkip(nRec) 

i do have a Xbase++ CLASS but not made a *.CH
i´m working on a harbour CLASS using CLASS TPQServer ( \HARBOUR\contrib\hbpgsql\ ) for PostgreSQL

---

have work with MySQL and PostgreSQL under Xbase++
but as Xbase++ goes PostgreSQL i have build my Xbase++ App with LibPQ.DLL (using Ot4XB LIB)

i use Concept of "OFFSET" and "LIMIT" and have a
Code: Select all  Expand view
METHOD JimBrowse:NextCursor( cTable, cField, cWhere, cOrder, cLimit, cOffset )
   ...
   cVar1 := "BEGIN WORK;"

   IF SP_nVersion() < 9
      cVar2 := "DECLARE MyCursor CURSOR FOR SELECT " + cField + ;
               " FROM " + cTable + ;
               IF( EMPTY( cWhere ), "", " WHERE " + cWhere ) + ;
               " ORDER BY " + cOrder
   ELSE
      cVar2 := "DECLARE MyCursor CURSOR FOR SELECT " + cField + ;
               ", row_number() OVER (ORDER BY " + cOrder + ")" + ;
               " FROM " + cTable + ;
               IF( EMPTY( cWhere ), "", " WHERE " + cWhere ) + ;
               " ORDER BY " + cOrder
   ENDIF

   cVar3 := "MOVE  FORWARD " + cOffset + " IN MyCursor"
   cVar4 := "FETCH FORWARD " + cLimit + " FROM MyCursor"
   cVar5 := "CLOSE MyCursor;"
   cVar6 := "COMMIT WORK;"

   StartStop( "START" )
   ::oPG:exec( cVar1 )
 

Method use "Cursor"
you need to "exec" each "cVar" before successful "Transaction" was written.

! Note : need PostgreSQL Server > 8 for row_number()

row_number() will create a "extra" Column in Result-Set which is like OrdKeyNo()
this is useful when want to "SKIP" (in Order) in SQL Table
if "nSkip" is > FIELD row_number() it need call o:NextCursor()

i "think" i can "translate" my Xbase++ CLASS Code into harbour CLASS Syntax
as it need no (GUI/Console) "Output" it might be used with every Constribution / Distribution

p.s. will need help to "translate" Xbase++ Syntax to harbour (still Newbie under harbour)
who use PostgreSQL with harbour ?

Re: Advantage Database Server

PostPosted: Fri Jan 21, 2022 11:23 am
by Antonio Linares
Dear Jimmy,

Carles Aubia (Charly) implemented a free and open source ORM for Harbour where you could include your code and take advantage of this great work already done:

https://github.com/carles9000/wdo

Dear Mr. Rao databases great expertise has not landed on mod_harbour yet, so it can only be used within FWH for now :-)

Re: Advantage Database Server

PostPosted: Fri Jan 21, 2022 2:08 pm
by Jimmy
Wow, thx for link
as i say i´m still Newbie under harbour

Re: Advantage Database Server

PostPosted: Sat Jan 22, 2022 3:55 pm
by Jimmy
hi,

have test WDO but at lease 3 "missing" Function
hbmk2: Error: Referenced, missing, but unknown function(s): VALTOCHAR(),
PTRTOSTR(), PTRTOUI()
where does those Function come from :?:

Re: Advantage Database Server

PostPosted: Sat Jan 22, 2022 6:13 pm
by Carles
Jimmy,

WDO was dessigned for modharbour. You can try create dummy functions

Function ptrtostr(); retu ""

Function ptrtoui(); retu ""

Re: Advantage Database Server

PostPosted: Sat Jan 22, 2022 8:17 pm
by Jimmy
hi,

thx for Answer

WDO was dessigned for modharbour.
forgot it :roll:

VALTOCHAR() was easy to replace
Code: Select all  Expand view
FUNCTION VALTOCHAR( cIn )
LOCAL cOut := hb_valToExp( cIn )
RETURN STRTRAN( cOut, '"', '' )


You can try create dummy functions

PTRTOSTR(), PTRTOUI() seems me Pointer Function but i can´t find out how they work :|

Code: Select all  Expand view
METHOD LoadStruct( hRes ) CLASS RDBMS_PG
LOCAL n, hField
    ::aFields = Array( ::FCount( hRes ) )

    FOR n = 1 to Len( ::aFields )
        hField := ::PG_fetch_field( hRes )
        if hField != 0
           ::aFields[ n ] = Array( 4 )
           ::aFields[ n ][ 1 ] = PtrToStr( hField, 0 )
            do case
               case AScan( { 253, 254, 12 }, PtrToUI( hField, hb_SysMyTypePos() ) ) != 0
                    ::aFields[ n ][ 2 ] = "C"
               case AScan( { 1, 3, 4, 5, 8, 9, 246 }, PtrToUI( hField, hb_SysMyTypePos() ) ) != 0
                    ::aFields[ n ][ 2 ] = "N"
               case AScan( { 10 }, PtrToUI( hField, hb_SysMyTypePos() ) ) != 0
                    ::aFields[ n ][ 2 ] = "D"
               case AScan( { 250, 252 }, PtrToUI( hField, hb_SysMyTypePos() ) ) != 0
                    ::aFields[ n ][ 2 ] = "M"
            endcase
        endif
   NEXT
RETU NIL

Re: Advantage Database Server

PostPosted: Sun Jan 23, 2022 6:32 am
by Carles
Jimmy,

Functions are used in modharbour

Code: Select all  Expand view
#include <hbapi.h>

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

HB_FUNC( PTRTOSTR )
{
   #ifdef HB_ARCH_32BIT
      const char * * pStrs = ( const char * * ) hb_parnl( 1 );  
   #else
      const char * * pStrs = ( const char * * ) hb_parnll( 1 );  
   #endif

   hb_retc( * ( pStrs + hb_parnl( 2 ) ) );
}

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

HB_FUNC( PTRTOUI )
{
   #ifdef HB_ARCH_32BIT
      unsigned int * pNums = ( unsigned int * ) hb_parnl( 1 );  
   #else
      unsigned int * pNums = ( unsigned int * ) hb_parnll( 1 );  
   #endif

   hb_retnl( * ( pNums + hb_parnl( 2 ) ) );
}

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

Re: Advantage Database Server

PostPosted: Sun Jan 23, 2022 9:44 am
by Jimmy
hi Carles,
Carles wrote:Functions are used in modharbour

thx for Code
i will try to complete WDO Sample "for Desktop"

Re: Advantage Database Server

PostPosted: Mon Jan 24, 2022 1:30 pm
by Rick Lipkin
To All

Forgive me ... I do not think there is a ( conversion - dbf/cdx or advantage server ) magic pill ... I have been using ADO for about 15 years and I found it to be nicely Object Oriented with every method you need to manipulate just about any Sql Database ( ms access, ms Sql Server, Oracle ... etc )

Rao has created a set of FW ado wrappers to make the syntax much easier .. look at AdoFuncs.Prg located in source\function .. also there is a full MDI Ado example I wrote \samples\AdoRick.prg

Rick Lipkin

Re: Advantage Database Server

PostPosted: Mon Jan 24, 2022 4:05 pm
by hmpaquito
There is a magic solution and his name is ADORdd https://github.com/AHFERREIRA/adordd