File Format fields order
Grzegorz (Greg) Pasternak
gpasternak at cogeco.ca
Tue Sep 28 19:40:30 UTC 2021
Doug;
You have made many valid points and I have seen and used it all. Still, I prefer to stay away from MOFF's in any new library I design.
On the other hand, I strongly agree on the "beer conversation" idea and hope that we can get together again in some forseable future.
Have a great day,
Greg
> On Sep 28, 2021, at 3:09 PM, Doug Easterbrook <doug at artsman.com> wrote:
>
> hi Greg.
>
> a word on MOFF’s…. which we use a lot .. but in this context.
>
> MOFF’s
> 1) can can used for code completion when typing variable names
> 2) can go in query classes — as fake variables.
>
>
> we call them gVars for two reasons
> 1) they are global
> 2) they start with ‘g’ for easy identification.
>
> for example, we might call one of the gIcon (character)
>
> and in a query class that is used to fill a list based on a table…. we might see the following for a ‘customer’ list which is defined on this query
>
> gIcon
> C_FIRST_NAME
> C_LAST_NAME
> etc
>
>
> so, when you do something like
>
> do list.$definefromsqlClass(‘customerList’)
> do list.$getAllData. (we have a function that does this)
>
>
> it makes sql that looks like
>
> select gIcon,C_FIRST_NAME,C_LAST_NAME from customerfile where ….
>
>
> of course its going to fail because gIcon is not a field defined in a database. and herein comes the cool trick that I’ve talked about at Euromnis
>
>
> Before we run the SQL, we have a function in the table class that is called. $getReplacementSelectNames
>
> it might do this
>
> Parameter pSelectVars
>
> calculate query as ‘ (select GetIconFunctionForCustomers(customerfile) as gIcons’
> calculare pSelectVars as replace(‘gIcons’,query,pSelectNames)
>
>
> the query now becomes
>
> select (select GetIconFunctionForCustomers(customerfile) as gIcons,C_FIRST_NAME,C_LAST_NAME from customerfile where ….
>
>
>
>
> and that, because it executes on the server, is super fast. We never play with lists as they are loading and do calculations on fields …. never — it s too slow in omnis to unpack and pack a list for each line.
>
>
>
> and the MOFF variable gIcons is now in a list.
>
>
> it all works very neatly with omnis — since omnis things it is any other variable from the database.
>
>
>
> and we stick style() icons into the gIcon to display icons at the left side of each row.
>
>
>
>
>
> the concept..
> 1) declare global variables that are not part of the database
> 2) substitute functions, sub selects, or any valid sql for the variable to pull any data from anywhere
> 3) display it in a list.
> 4) reference it as list.gVariable
> 5) get code completion when referring to gVariable
> 6) have a definition for the variable so that when you look it up using f9 or hovering over the variable, it describes what its purpose is.
> 7) works when using foreground or background threads for sql — interchangeably.
>
>
> and there are more reasons we do it, but those are the basics. it sure speeds up SQL… and it makes background loads work great.
>
>
>
> but again, that is another beer conversation. which I can’t wait to have again one day.
>
>
>
>
> Doug Easterbrook
> Arts Management Systems Ltd.
> mailto:doug at artsman.com
> http://www.artsman.com
> Phone (403) 650-1978
>
>> On September 28, 2021, at 11:49 AM, Grzegorz (Greg) Pasternak <gpasternak at cogeco.ca> wrote:
>>
>>
>>
>>> On Sep 28, 2021, at 12:42 PM, Das Goravani <goravanis at gmail.com> wrote:
>>>
>>>
>>>>
>>>> Rudolf Bargholz
>>
>>> It’s probably faster than repeat loop assigning values from Schema defined row to MOFF fields.. just assign row then load cols to fill the CRB
>>>>
>>
>> A comment about CRB, while it may be convenient to use at times I prefer to stay away from it, instead I prefer to work with vars of type row with relevant scope. I dislike CRB because it is global and I never trust its state. I prefer to avoid MOFF for the same reason.
>>
>> Greg
>>
>>
>>
>> _____________________________________________________________
>> Manage your list subscriptions at http://lists.omnis-dev.com
>> Start a new message -> mailto:omnisdev-en at lists.omnis-dev.com
>
> _____________________________________________________________
> Manage your list subscriptions at http://lists.omnis-dev.com
> Start a new message -> mailto:omnisdev-en at lists.omnis-dev.com
More information about the omnisdev-en
mailing list