From: Alexander Schmitt on
Geoff,

doing good progress with vo2ado now... could you send me a price list
for SQLMaster?

Thanks!
Alex

On 10 Feb., 22:30, "Geoff Schaller"
<geo...(a)softxwareobjectives.com.au> wrote:
> Alex,
>
> This is why I suggested (3 times now) to load and run ALL of Robert's
> samples. That will give you a start point because from there, everything
> else is your fault. And it stops you making these silly mistakes like
> below.
>
> Geoff
>
> "Alexander Schmitt" <al.schm...(a)gmx.de> wrote in mesge
>
> news:937810f4-47eb-4d18-b89d-6b6ad7eeb2f0(a)c4g2000yqa.googlegroups.com:
>
> > Willie,
>
> > yes that's it! I tracked it!
>
> > ------
> > IF _aField != NULL_ARRAY .AND. .NOT. File (cFile)
> > oFile := dbFileSpec { cFile, cDriver }
> > oFile:create (cFile, _aField, cDriver, SetAnsi())
> > ENDIF
>
> > -----
> > That was part of Ivo Wessel's init of the dbShellServer class that
> > automatically creates the "DBF" when it's not found on the hard disk.
> > The "create" method triggered a call "DROP TABLE LIEFE_45" followed by
> > "CREATE TABLE LIEFE_45". Maybe due to already existing tablesvo2ado
> > creates one with this suffix.
>
> > I guess a divide and conquer approach would be more target-aimed than
> > my brute force top down conversion ;-)
>
> > Best,
> > Alex
>
>

From: Geoff Schaller on
SQL Master is free - and you may distribute it with your applications to
clients as a diagnostic tool.

The source isn't though <g>.
(too much blood, sweat and tears...)

The best uses for sql master are direct table editing, t-sql to VO
source and back, tools to create and test primary and foreign keys,
tools to create and test functions/ stroed procs and connection strings.
It is also a live example of my SQL classes. However there is lot that
SSMS will do better, such as intellisense etc.

For those who purchase the source though, they get a complete DBServer
replacement environment to use with SQL. Primarily I support MS SQL but
DB2 as a second option.

Geoff



"Alexander Schmitt" <al.schmitt(a)gmx.de> wrote in message
news:71544b08-db86-4279-9c54-1f735b89865f(a)d27g2000yqf.googlegroups.com:

> Geoff,
>
> doing good progress with vo2ado now... could you send me a price list
> for SQLMaster?
>
> Thanks!
> Alex
>
> On 10 Feb., 22:30, "Geoff Schaller"
> <geo...(a)softxwareobjectives.com.au> wrote:
>
> > Alex,
> >
> > This is why I suggested (3 times now) to load and run ALL of Robert's
> > samples. That will give you a start point because from there, everything
> > else is your fault. And it stops you making these silly mistakes like
> > below.
> >
> > Geoff
> >
> > "Alexander Schmitt" <al.schm...(a)gmx.de> wrote in mesge
> >
> > news:937810f4-47eb-4d18-b89d-6b6ad7eeb2f0(a)c4g2000yqa.googlegroups.com:
> >
>
> > > Willie,
> >
> > > yes that's it! I tracked it!
> >
> > > ------
> > > IF _aField != NULL_ARRAY .AND. .NOT. File (cFile)
> > > oFile := dbFileSpec { cFile, cDriver }
> > > oFile:create (cFile, _aField, cDriver, SetAnsi())
> > > ENDIF
> >
> > > -----
> > > That was part of Ivo Wessel's init of the dbShellServer class that
> > > automatically creates the "DBF" when it's not found on the hard disk.
> > > The "create" method triggered a call "DROP TABLE LIEFE_45" followed by
> > > "CREATE TABLE LIEFE_45". Maybe due to already existing tablesvo2ado
> > > creates one with this suffix.
> >
> > > I guess a divide and conquer approach would be more target-aimed than
> > > my brute force top down conversion ;-)
> >
> > > Best,
> > > Alex
> >
>
> >

From: richard.townsendrose on
Geoff

> The source isn't though <g>.
> (too much blood, sweat and tears...)

How much ????

on scatter gather, the best and fastest way i have found is to use a
bArrayServer from bbrowser.

SELF:asNM:RecordPut(SELF:oNMServerV4:RecordArrayGet())

and for that one needs

METHOD RecordArrayGet(aSkip) CLASS DBServer
//careful to use aSkip when needed
LOCAL n AS WORD
LOCAL aData:={} AS ARRAY
LOCAL cFieldName AS STRING

FOR n:=1 TO SELF:fCount
IF ! Empty(aSkip)
cFieldName:=AllTrim(SELF:FieldName(n))
IF AScan(aSkip, {|cStr| cStr == cFieldName}) > 0
LOOP
ENDIF
ENDIF
AAdd(aData, SELF:FIELDGET(n))
NEXT

RETURN aData

so saving the becomes:
oNM:RecordArrayPut(SELF:asNM:RecordGet())

of course one needs to name ones controls appropriately and in the
postinit

SELF:Use(SELF:Owner:asNM)

one has to be cvareful with when one turms auto validation on and off
as well .. but thats easy.

and then oif course to create the arrayserver

SELF:asNM:= bArrayServer{SELF:oNMServerV4:DBStruct, {},
BAUTO,BDATAFORMAT_DBASE}

and add any extra fileds at the end ...
AAdd(aStru, {'LVALID', 'L', 1, 0})
and dont forget to use aSkip is needed

richard
From: Alexander Schmitt on
On 14 Mrz., 12:26, "richard.townsendrose"
<richard.townsendr...(a)googlemail.com> wrote:
> Geoff
>
> > The source isn't though <g>.
> > (too much blood, sweat and tears...)
>
> How much ????
>
> on scatter gather, the best and fastest way i have found is to use a
> bArrayServer from bbrowser.
>
>         SELF:asNM:RecordPut(SELF:oNMServerV4:RecordArrayGet())
>
> and for that one needs
>
> METHOD RecordArrayGet(aSkip) CLASS DBServer
> //careful to use aSkip when needed
>         LOCAL n AS WORD
>         LOCAL aData:={} AS ARRAY
>         LOCAL cFieldName AS STRING
>
>         FOR n:=1 TO SELF:fCount
>                 IF ! Empty(aSkip)
>                         cFieldName:=AllTrim(SELF:FieldName(n))
>                         IF AScan(aSkip, {|cStr| cStr == cFieldName}) > 0
>                                 LOOP
>                         ENDIF
>                 ENDIF
>                 AAdd(aData, SELF:FIELDGET(n))
>         NEXT
>
> RETURN aData
>
> so saving the becomes:
>         oNM:RecordArrayPut(SELF:asNM:RecordGet())
>
> of course one needs to name ones controls appropriately and in the
> postinit
>
>         SELF:Use(SELF:Owner:asNM)
>
> one has to be cvareful with when one turms auto validation on and off
> as well .. but thats easy.
>
> and then oif course to create the arrayserver
>
>         SELF:asNM:= bArrayServer{SELF:oNMServerV4:DBStruct, {},
> BAUTO,BDATAFORMAT_DBASE}
>
> and add any extra fileds at the end ...
>         AAdd(aStru, {'LVALID', 'L', 1, 0})
> and dont forget to use aSkip is needed
>
> richard

That is good news, Geoff. I guess I saw a 90-days trial period for
SQLMaster somewhere on your website, that's why I asked.

So can you send me the prices for the source version? I might be
interested in the bulk insertion...