trying with tdatabase

trying with tdatabase

Postby Silvio.Falconi » Thu Dec 27, 2018 12:41 am

Code: Select all  Expand view  RUN

function test()
    oServiziSingoli:= TServizi():new()
   oServiziSingoli:setFilter( "multiple == .f.")
   oServiziSingoli:gotop()
xbrowse()
return nil


CLASS TServizi from tdatarow
   Method New()
ENDCLASS

Method New( lShared ) CLASS TServizi
   ::super:New(,oApp():cDbfPath + "Servizi" ,, lShared)
   if ::use()
      ::setOrder(1)
      ::gotop()
   endif
Return Self


and let me an error
Time from start: 0 hours 0 mins 1 secs
Error occurred at: 27-12-2018, 01:39:52
Error description: Error BASE/1004 Message not found: TSERVIZI:USE


How OPen it wtith tdatabase or tdatarow ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7070
Joined: Thu Oct 18, 2012 7:17 pm

Re: trying with tdatabase

Postby nageswaragunupudi » Thu Dec 27, 2018 3:51 am

Code: Select all  Expand view  RUN
cDbf := <your dbf file name>
oDbf := TDatabase():Open( nil, cDbf, "DBFCDX" )
 
Regards

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

Re: trying with tdatabase

Postby Silvio.Falconi » Fri Dec 28, 2018 1:49 am

this is on share mode ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7070
Joined: Thu Oct 18, 2012 7:17 pm

Re: trying with tdatabase

Postby nageswaragunupudi » Fri Dec 28, 2018 2:26 am

Set 4th parameter to .T. for shared mode.

When you produce a multi-user application, it is better to set
Code: Select all  Expand view  RUN

SET EXCLUSIVE OFF
 

at the beginning of the application.
In this case all dbfs are opened in shared mode by default.
Regards

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

Re: trying with tdatabase

Postby Silvio.Falconi » Thu Jan 24, 2019 11:59 am

Nages,
I try with

oTariffe:= TTariffe():new()
oTariffe:gotop()



Code: Select all  Expand view  RUN
CLASS TXData from TDataBase
   DATA cPath init cFilePath(GetModuleFileName( GetInstance() ))  + "Data\"
ENDCLASS

CLASS TTariffe from TXData  
   METHOD New()
ENDCLASS

METHOD New( lShared ) CLASS TTariffe
   Default lShared := .t.
   ::super:New(,::cPath + "
Tariffe" ,, lShared)
   if ::use()
      ::setOrder(1)
      ::gotop()
   endif
RETURN Self



It return me an error
Error description: Error BASE/1002 Alias does not exist: TARIFFE

Stack Calls
===========
Called from: => DBUSEAREA( 0 )
Called from: .\source\classes\DATABASE.PRG => (b)TDATABASE_USE( 412 )
Called from: .\source\classes\DATABASE.PRG => TTARIFFE:TD_EXECLOOP( 1983 )
Called from: .\source\classes\DATABASE.PRG => TTARIFFE:USE( 412 )
Called from: test.prg => TTARIFFE:NEW( 677 )
Called from: test.prg => MAIN( 62 )

why ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7070
Joined: Thu Oct 18, 2012 7:17 pm

Re: trying with tdatabase

Postby nageswaragunupudi » Thu Jan 24, 2019 3:16 pm

Using pure TDatabase class there is no way you can get this kind of error. First thing, TDatabase does not use this kind of alias name.

For simple opening of a dbf file should you use such a round about complex approach?

Please use FWH TDatabase (without any modifications) and run the following program
Code: Select all  Expand view  RUN

#include "fivewin.ch"

REQUEST DBFCDX

function Main()

   local oDbf

   SET EXCLUSIVE OFF
   SET AUTORDER TO 1

   oDbf  := TDatabase():Open( nil, "DATA\TARIFFE", , .T. )
   if oDbf:Used()
      XBROWSER oDbf
      oDbf:Close()
   endif

return nil
 

This should work without any runtime error.
Regards

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

Re: trying with tdatabase

Postby Silvio.Falconi » Thu Jan 24, 2019 5:20 pm

thanks Nages Rao. it run ok but
On my application I have 15/20 archives and I wish found a solution to use them on Lan Network.
From November I 'm trying many test and I have and had many probems because there is allways soething of wrong.

I found a function to open an archive but I not Know if can go good :
Code: Select all  Expand view  RUN


FUNCTION Open_Db( cArchivo, aIdx )
   LOCAL cAlias
   LOCAL oDbf
   LOCAL i
   STATIC _Select_
   DEFAULT _Select_ := 0

   cAlias := "TB" + PADL( ++_Select_, 3, "0" )

   DbUseArea( .T. ,, cArchivo, cAlias, .T. )

   IF VALTYPE( aIdx ) == "A"
      FOR i := 1 TO LEN( aIdx )
         DBSETINDEX( aIdx[ i ] )
      NEXT
   ENDIF

   oDbf := TDb():New( cAlias )

RETURN oDbf

 


it use a database class dated 2005

and on each procedure the call is :

::ocustomer := Open_Db( "customer", { "first" } )
::ocustomer:SetOrder( "NOMBRE" )
::oCustomer:GoTop()

a Have a complete application use it and run good on lan netwok ( I test it at my office) but I not Know if I must use it or another
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7070
Joined: Thu Oct 18, 2012 7:17 pm

Re: trying with tdatabase

Postby nageswaragunupudi » Thu Jan 24, 2019 5:36 pm

The above function Open_DB() is meant for DBFNTX.

Pleae do not get confused with so many alternatives like TDB, TDatbase, TData etc and keep mixing them up.

TDatabase is the latest and advanced.

Still, I personally advise you that is not necessary to use any of these classes to make a good multiuser application.

On my application I have 15/20 archives and I wish found a solution to use them on Lan Network.

15 or 20 is a small number. Even if you have 100 archives there should be no problem.
Regards

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

Re: trying with tdatabase

Postby Silvio.Falconi » Thu Jan 24, 2019 5:53 pm

How it could be a function to open an archive and all its indexes (cdx) with tdatabase and from a specific example folder. \ data \

I made
Code: Select all  Expand view  RUN
#include "fivewin.ch"

REQUEST DBFCDX

Function Test()
   Local oCustomer

   oCustomer:=Db_Open( "CUSTOMER",.t.)
   oCustomer:setorder(1)
   oCustomer:gotop()


      XBROWSER oCustomer
 
    return nil


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

function Db_Open(cDbf,lShare)

   local oDbf

   SET EXCLUSIVE OFF
   SET AUTORDER TO 1

   oDbf  := TDatabase():Open( nil, cDbf, ,lShare )


   return oDbf
//----------------------------------------------//
 


it seems to run ok
( I made a customer.cdx with tag first)
Last edited by Silvio.Falconi on Thu Jan 24, 2019 6:09 pm, edited 1 time in total.
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7070
Joined: Thu Oct 18, 2012 7:17 pm

Re: trying with tdatabase

Postby James Bott » Thu Jan 24, 2019 5:58 pm

Silvio,

You already have the files opening it a specified path with the subclass we created, so you don't need a function to do it also.
FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA

Re: trying with tdatabase

Postby TimStone » Thu Jan 24, 2019 6:13 pm

Mr. Rao,

I have been using tData for many years, and it's subset of tSearch and tRecord.

I can assure you it does nothing to conflict with tDatabase from which it inherits.

I have also been developing in multi=user environments with dBase, Clipper, and FWH/xHarbour/Harbour since the mid 1980's. I have absolutely no problem using data objects efficiently in those settings, and my primary application used in many businesses automatically supports single, multi, and ADS setups with absolutely no difficulty.

Your work in enhancing FWH is appreciated, and the additions to tDatabase have been noted and well received. However, it is not necessary to recode sections to eliminate tData. There is no difficulty here.

Tim.
Tim Stone
http://www.MasterLinkSoftware.com
http://www.autoshopwriter.com
timstone@masterlinksoftware.com
Using: FWH 23.10 with Harbour 3.2.0 / Microsoft Visual Studio Community 2022-24 32/64 bit
User avatar
TimStone
 
Posts: 2944
Joined: Fri Oct 07, 2005 1:45 pm
Location: Trabuco Canyon, CA USA

Re: trying with tdatabase

Postby Silvio.Falconi » Thu Jan 24, 2019 6:14 pm

James, ( and Tim Stone because I Know only you use tdata on this forum)

as I wrote You tdata not run ok I had and Have many problem and each day there is some problem on Original source application there is not
I lose my time from November and I'm afraid of not creating anything that can work on a network and the month of May is too close
I had to explain all the archives and what they did, I can not upset the love application because you think you have to do in a certain way different from how I have already thought so many years ago.
In this situation I just had to try and convert my application and make it workable in an LAN network.
Instead, I spend my nights trying to convert my application with your clase tdata without still having valid solutions
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7070
Joined: Thu Oct 18, 2012 7:17 pm

Re: trying with tdatabase

Postby James Bott » Thu Jan 24, 2019 6:45 pm

Silvio,

>as I wrote You tdata not run ok I had and Have many problem and each day there is some problem on Original source application there is not

Well, as Tim has confirmed, TData DOES run OK and it has been for many years--since the '80s.

>I lose my time from November and I'm afraid of not creating anything that can work on a network and the month of May is too close.

Maybe you should have started sooner. I will take you even longer to convert it to multi-user without TData.

>I had to explain all the archives and what they did, I can not upset the love application because you think you have to do in a certain way different from how I have already thought so many years ago.

Well you were programming using exclusive use only. You cannot program the same way for multi-user whether you use objects or not.

>In this situation I just had to try and convert my application and make it workable in an LAN network.
Instead, I spend my nights trying to convert my application with your class tdata without still having valid solutions.


Well, you don't have valid solutions when your code has errors. And you do have valid solutions when it is programmed correctly--and it takes a lot less code. Remember I eliminated 100 lines of code just in one function by using data objects. It does take some time to understand how to do things differently. But whether you use TData or not, it IS going to take some time to convert to multi-user. And it is going to take more time to convert without using database objects.

In additon to this, your application is the most convoluted, unorthodox, complex application I have ever seen in my 33+ years of writing code. I don't mean for that to sound negative, it just is the way you have done things. The purpose of the application is like nothing I have ever seen too. So both of us have to go through a learning curve.

If it was easy, then anyone could do it.-Anon
FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA

Re: trying with tdatabase

Postby Silvio.Falconi » Thu Jan 24, 2019 7:15 pm

James,
All This is not true

this evening I did this test in 3 minutes and it works without any classes (tServizi->txdata->tdata->tdatabase)

Please see dbopen function easy

Image

Code: Select all  Expand view  RUN


#include "fivewin.ch"

REQUEST DBFCDX


static  cDbfPath


Function Servizi()
   local oDlgServices, oFont, oBold, oBrw1, oBrw2, oSay1, oSay2, oBtnOk, oBtnClose, m
   Local oServizi,oServiziSingoli,oServiziMultipli
   Local cFilter1,cFilter2
   Local cCursor:= TCursor():New(,'HAND')

   cFilter1:= 'FIELD->MULTIPLE=.F.'
   cFilter2:= 'FIELD->MULTIPLE=.T.'


  cDbfPath    := cFilePath(GetModuleFileName( GetInstance() ))  + "Data\"
  cIniFile    := cFilePath( GetModuleFileName( GetInstance() ) ) + "
Beach.ini"



   oServiziSingoli:=Db_Open( "
Servizi",.t.)
   oServiziSingoli:DbSetFilter( {|| &cFilter1  },  )
   oServiziSingoli:gotop()

   oServiziMultipli:=Db_Open( "
Servizi",.t.)
   oServiziMultipli:DbSetFilter( {|| &cFilter2  },  )
   oServiziMultipli:gotop()


   DEFINE FONT oFont NAME "
TAHOMA" SIZE 0,-14
   DEFINE FONT oBold NAME "
TAHOMA" SIZE 0,-14 BOLD

   DEFINE DIALOG oDlgServices SIZE 880,600 PIXEL TRUEPIXEL RESIZABLE FONT oFont ;
   TITLE "
Bikini - Gestione Servizi Singoli e Multipli"

   @ 10, 40 SAY oSay1 PROMPT "
Servizi singoli"  SIZE 400,24 PIXEL OF oDlgServices CENTER FONT oBold
   @ 10,440 SAY oSay2 PROMPT "
Servizi multipli" SIZE 400,24 PIXEL OF oDlgServices CENTER FONT oBold



    @ 95, 40 XBROWSE oBrw1 SIZE 400,-65 PIXEL OF oDlgServices;
           COLUMNS 5,2,4,7,8,9,12,11;
           HEADERS "
Tipo","Descrizione","Costo","Disp.","A4", "Pos", "Ord.","";
           COLSIZES 40,90,50,50,30,30,34,34 ;
           CELL LINES NOBORDER ;
           DATASOURCE oServiziSingoli:cAlias

         WITH OBJECT oBrw1
                  :nRowHeight    := 30
                      WITH OBJECT oBrw1:aCols[ 1]
                             :lBmpStretch     := .F.
                             :lBmpTransparent := .T.
                             :nwidth := 40
                             :bStrImage       := {|| oServiziSingoli:IMAGE }
                          END

                       WITH OBJECT  oBrw1:aCols[ 3]
                         :cEditPicture     := '@ €99,999.99'
                         :nFootStrAlign           := AL_RIGHT
                      END


                        WITH OBJECT oBrw1:aCols[ 5]
                             :AddBitmap({ "
BTN_PNG_TICK" ,"BTN_PNG_TICK_RED"})
                             :bBmpData := { || iif( oServiziSingoli:a4, 1, 2) }
                             :bStrData := { || "
" }
                         END
                         WITH OBJECT oBrw1:aCols[ 6]
                             :AddBitmap({ "
BTN_PNG_TICK" ,"BTN_PNG_TICK_RED"})
                             :bBmpData := { || iif(oServiziSingoli:pos, 1, 2) }
                             :bStrData := { || "
" }
                         END
                         WITH OBJECT oBrw1:aCols[ 8]
                             :AddBitmap({ "
BTN_PNG_LOCKSI" ,"BTN_PNG_LOCKNO"})
                             :bBmpData := { || iif( oServiziSingoli:ISlock, 1, 2) }
                             :bStrData := { || "
" }
                         END
                      :lHscroll            := .F.
                      :l2007               := .F.
                      :l2015               := .T.
                      :lRecordSelector     := .f.
                      :nStretchCol         := STRETCHCOL_WIDEST
                      :lAllowRowSizing     := .F.
                      :lAllowColSwapping   := .F.
                      :lAllowColHiding     := .F.
                      :nMarqueeStyle       := MARQSTYLE_HIGHLWIN7
                      :SetoDBF( oServiziSingoli )
                      :CreateFromCode()
                 END

                  for n := 1 to len(oBrw1:aCols)
                      oBrw1:aCols[n]:lAllowSizing := .f.
                  next


             @ 95,450  XBROWSE oBrw2 SIZE -40,-65 PIXEL OF oDlgServices;
                    COLUMNS 5,2,4,8,9,12;
                    HEADERS "
Tipo","Descrizione","Costo","A4", "Pos", "Ord.";
                  COLSIZES 40,150,70,30,30,40 ;
                    CELL LINES NOBORDER ;
                    DATASOURCE oServiziMultipli:cAlias

                 WITH OBJECT oBrw2
                    :nRowHeight    := 30

                      WITH OBJECT oBrw2:aCols[ 1]
                             :lBmpStretch     := .F.
                             :lBmpTransparent := .T.
                             :nwidth := 40
                             :bStrImage       := {||oServiziMultipli:IMAGE }
                          END
                          WITH OBJECT  oBrw2:aCols[ 3]
                         :cEditPicture     := '@ €99,999.99'
                         :nFootStrAlign           := AL_RIGHT
                      END
                        WITH OBJECT oBrw2:aCols[ 4]
                             :AddBitmap({ "
BTN_PNG_TICK" ,"BTN_PNG_TICK_RED"})
                             :bBmpData := { || iif( oServiziMultipli:a4, 1, 2) }
                             :bStrData := { || "
" }
                         END
                         WITH OBJECT oBrw2:aCols[ 5]
                             :AddBitmap({ "
BTN_PNG_TICK" ,"BTN_PNG_TICK_RED"})
                             :bBmpData := { || iif( oServiziMultipli:pos, 1, 2) }
                             :bStrData := { || "
" }
                         END
                      :lHscroll            := .F.
                      :l2007               := .F.
                      :l2015               := .T.
                      :lRecordSelector     := .f.
                      :nStretchCol         := STRETCHCOL_WIDEST
                      :lAllowRowSizing     := .F.
                      :lAllowColSwapping   := .F.
                      :lAllowColHiding     := .F.
                      :nMarqueeStyle       := MARQSTYLE_HIGHLWIN7
                        :SetoDBF( oServiziMultipli )
                      :CreateFromCode()
                 END

                 for n := 1 to len(oBrw2:aCols)
                      oBrw2:aCols[n]:lAllowSizing := .F.
                   next



                 @ 550,660 BTNBMP oBtnClose PROMPT "
Ordina" ;
                 RESOURCE "
BTN_PNG_ELEMENTIORD" FLAT;
                 SIZE 95,40 LEFT PIXEL OF oDlgServices ;
                 ACTION  NIL

                  @ 550,760 BTNBMP oBtnOK    PROMPT "
Esci"    ;
                 RESOURCE "
BTN_PNG_USCITA" FLAT;
                 SIZE 95,40 LEFT PIXEL OF oDlgServices ;
                 ACTION oDlgServices:End()


   @ 50,100 BTNBMP oBtnNew PROMPT "
Nuovo"     ;
   RESOURCE "
BTN_PNG_SERVIZI_NEW" FLAT;
   SIZE 90,40 RIGHT PIXEL OF oDlgServices;
   ACTION SeEdita(oBrw1, 1, , oDlgServices, ,cFilter1)

     oBtnNew:oCursor:=cCursor
     SetGradientBtnbmp(1999,oBtnNew)




   @ 50,200 BTNBMP oBtnMod PROMPT "
Modifica"  ;
   RESOURCE "
BTN_PNG_SERVIZI_MOD" FLAT;
   SIZE 90,40 RIGHT PIXEL OF oDlgServices;
   ACTION SeEdita(oBrw1, 2, , oDlgServices, ,cFilter1)

         oBtnMod:oCursor:=cCursor
         SetGradientBtnbmp(1999,oBtnMod)


   @ 50,300 BTNBMP oBtnCan PROMPT "
Cancella"  ;
   RESOURCE "
BTN_PNG_SERVIZI_DEL" FLAT;
   SIZE 90,40 RIGHT PIXEL OF oDlgServices;
   ACTION SeBorra(oBrw1)

            oBtnCan:oCursor:=cCursor
      SetGradientBtnbmp(1999,oBtnCan)

   @ 50,480 BTNBMP oBtnNew1 PROMPT "
Nuovo"    ;
   RESOURCE "
BTN_PNG_MULTIPLI_NEW" FLAT;
   SIZE 90,40 LEFT PIXEL OF oDlgServices;
   ACTION  SeMultiEdita(oBrw2, 1, , oDlgServices, ,cFilter2)

               oBtnNew1:oCursor:=cCursor
                     SetGradientBtnbmp(1999,oBtnNew1)


   @ 50,580 BTNBMP oBtnMod1 PROMPT "
Modifica" ;
   RESOURCE "
BTN_PNG_MULTIPLI_MOD" FLAT;
   SIZE 90,40 LEFT PIXEL OF oDlgServices;
   ACTION  SeMultiEdita(oBrw2, 2, , oDlgServices, ,cFilter2)
                 oBtnMod1:oCursor:=cCursor
                     SetGradientBtnbmp(1999,oBtnMod1)

   @ 50,680 BTNBMP oBtnCan1 PROMPT "
Cancella" ;
   RESOURCE "
BTN_PNG_MULTIPLI_DEL" FLAT;
   SIZE 90,40 LEFT PIXEL OF oDlgServices;
   ACTION  SeBorra(oBrw2)
                  oBtnCan1:oCursor:=cCursor
                      SetGradientBtnbmp(1999,oBtnCan1)



   oDlgServices:aMinMaxInfo := { nil, nil, nil, nil, 878, 570, nil, nil } //878, 570

   oDlgServices:bResized  := <||
      local oRect    := oDlgServices:GetCliRect()
      local x        := Int( oRect:nWidth / 2 )

      oSay1:nWidth   := x - 40
      oSay2:nLeft    := x
      oSay2:nWidth   := x - 40

      oBrw1:nWidth   := x - 40
      oBrw2:nLeft    := x + 40
      oBrw2:nWidth   := 200

      oBtnClose:nLeft   := oRect:nRight - 220
      oBtnClose:nTop    := oRect:nBottom - 50

      oBtnOK:nLeft      := oRect:nRight - 120
      oBtnOK:nTop       := oRect:nBottom - 50

       oBtnNew:nTop    := oRect:ntop + 50
       oBtnNew:nLeft   := x - 350

       oBtnMod:nTop    := oRect:ntop + 50
       oBtnMod:nLeft   := x - 250

       oBtnCan:nTop    := oRect:ntop + 50
       oBtnCan:nLeft   := x - 150

       oBtnNew1:nTop    := oRect:ntop + 50
       oBtnNew1:nLeft   := x + 100

       oBtnMod1:nTop    := oRect:ntop + 50
       oBtnMod1:nLeft   := x + 200

       oBtnCan1:nTop    := oRect:ntop + 50
       oBtnCan1:nLeft   := x + 300


      return nil
      >

   ACTIVATE DIALOG oDlgServices CENTERED
   RELEASE FONT oFont, oBold

return nil
//---------------------------------------------------------------------//
Function SeEdita(oGrid, nMode, oCont, oParent, cUtente,cFilter1)
return nil
//----------------------------------------------------------------------//
Function SeBorra(oGrid, oCont)
return nil
//----------------------------------------------------------------------//
Function SeMultiEdita(oGrid, nMode, oCont, oParent, cUtente,cFilter2)
return nil
//---------------------------------------------------------------------//
Function Db_Open(cDbf,lShare)
   local oDbf

   SET EXCLUSIVE OFF
   SET AUTORDER TO 1

   oDbf  := TDatabase():Open( nil, cDbfPath+cDbf, ,lShare )

   return oDbf
//----------------------------------------------//



Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7070
Joined: Thu Oct 18, 2012 7:17 pm

Re: trying with tdatabase

Postby nageswaragunupudi » Thu Jan 24, 2019 7:36 pm

Dear friend Mr. Silvio

I know that it is not only Mr. Tim, but there are many satisfied users of TData class and there are many applications running using TData class. If you are having any problems in using it, I do not think there is any problem with the class but you may be needing more guidance from its author and I am sure Mr. James will provide it with pleasure.

Finally, you decide what is comfortable for you, without criticizing any product.

Mr. Tim

We do not know what is in the TData class. We neither canvas for it or against it. We talk only about our FWH classes.

FWH can provide support only if the user uses pure unmodified FWH TDatabase class.

As we keep enhancing all other classes, we keep enhancing TDatabase also. Some of the enhancements are based on user inputs and requests as well as our own experiences with our own commercial applications.

However, it is not necessary to recode sections to eliminate tData

I do not understand what this means.

To All:
My humble submission to all is not to argue which is good or bad. Instead, use what you like.
Regards

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

Next

Return to FiveWin for Harbour/xHarbour

Who is online

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