Postgres query into Omnis question

Bastiaan Olij bastiaan at basenlily.me
Tue Mar 28 18:35:47 EDT 2017


Hey Steve,

Pesky bug that one, character fields with a length over a certain number
of character (including fields of type text) for some reason get a
length of 0 in Omnis.
It pulls the data in just fine but the zero length will eventually
truncate and thus clear the fields.

Casting the field to something smaller will solve it which I believe is
the solution Mayada offered but off course if your data is more then
that number of characters and you wish to not loose that, it'll be too
little.

I've overridden the $fetch in my base table class to fetch into a
temporary list if no columns are defined, I then loop through the
columns of that temporary list to add the columns to my real list and
make alterations as necessary, then do a merge. The overhead is negligible.

So something in the line of this:
---
tBase.$fetch(pvClearList)
if $cinst.$colcount=0
    Do $cinst.$statementobject.$fetch(lvList,kFetchAll)
    For lvColNo from 1 to lvList.$colcount
        If
lvList.$cols.[lvColNo].$coltype=kCharacter&lvList.$cols.[lvColNo].$colsublen=0
            Do $cinst.$cols.$add(lvList.$cols.[lvColNo].$name,
lvList.$cols.[lvColNo].$coltype, lvList.$cols.[lvColNo].$colsubtype,
10000000)
        Else
            Do $cinst.$cols.$add(lvList.$cols.[lvColNo].$name,
lvList.$cols.[lvColNo].$coltype, lvList.$cols.[lvColNo].$colsubtype,
lvList.$cols.[lvColNo].$colsublen)
        End if
    End for

    Do $cinst.$merge(lvList,kFalse,kFalse,pvClearList)

    Quit method kTrue
Else
    quit method $inherited.$fetch(pvClearList)
End if
---

Forgive any typos..

Cheers,

Bas

On 29/03/2017 6:52 AM, Steve Finger wrote:
> Hi,
>
> I’m using Studio 6.1.3 to do a query to Postgres. To simplify, here is an example of what I’m trying to do:
>
> select order_number, order_comments
> from order_forecast
> UNION
> select order_number, null as order_comments
> from orders
>
>
> Then I fetch the result into an undefined Omnis list. Currently only the orders table has values.
>
> The problem is what Omnis brings back into the list. The order_comments column doesn’t have a length. So in an Omnis window which has a complex grid to display and enter values into the order_comments field, nothing can be typed in.
>
> If I change null to ‘ ‘ (1 space) in the query then the column is defined with a length of 1.
>
> The database table is set to 2000 characters.
>
> How can I modify the query so Omnis knows that the length of the column that is returned from the query should allow 2000 characters? Or am I going to have to redefine the list in Omnis?
>
> Thanks,
> Steve Finger
> _____________________________________________________________
> Manage your list subscriptions at http://lists.omnis-dev.com


-- 
Kindest Regards,

Bastiaan Olij
e-mail: bastiaan at basenlily.me
web: http://www.basenlily.me
Skype: Mux213
http://www.linkedin.com/in/bastiaanolij





More information about the omnisdev-en mailing list