On Monday 14 January 2008 11:48 am, johnf wrote:
> On Monday 14 January 2008 11:34:35 am Adrian Klaver wrote:
> > -------------- Original message ----------------------
> > From: johnf <[EMAIL PROTECTED]>
> >
> > > On Monday 14 January 2008 11:05:55 am Ed Leafe wrote:
> > > > On Jan 14, 2008, at 12:48 PM, johnf wrote:
> > > > > Open a form with a bizobj that contains the field 'mytest' as in
> > > > > above;
> > > > > open dShell
> > > > > self.new()
> > > > > mybiz=self.getBizobj()
> > > > > mybiz.getFieldVal('mytest')
> > > > > u''
> > > > >
> > > > > I get a blank field.  In fact I have not been able to reproduce
> > > > > anything like
> > > > > what you are getting.
> > > >
> > > >         Calling new() does no interaction with the database. There is 
> > > > no way
> > > > to get the values from the database without writing your own code to
> > > > do so.
> > > >
> > > > -- Ed Leafe
> > > > -- http://leafe.com
> > > > -- http://dabodev.com
> > >
> > > That's what I said the first time.  However, Adrian states the 
following:
> > > >Dabo is aware of the default values. When I call self.new() the
> > > > Dropdown
> > >
> > > Lists
> > >
> > > >are populated with the correct default values from Postgres. Those are
> > > > the self.'RegID'.Value items above.
> > >
> > > I can't figure out where the values are coming from if they are not in
> > > Dabo somewhere?
> >
> > These are Dropdown Lists so the values are in the Choices property of the
> > control. The thing is that the values that show up as the Value of each
> > control when I call new() is the correct default value. To get that Value
> > into the control the correct value is selected from the Choices list. The
> > default value is not the first item in the list either by position or
> > alphabetically, so it is not a case of displaying the first value. I will
> > have to more digging to figure this out. I have to run right now so it
> > will have to wait until tonight.
> >
> >
> >
> > --
> > Adrian Klaver
> > [EMAIL PROTECTED]
>
> in the Form code afterInit() add the following:
> self."RegID".Position=0
> where "RegID" is the ID of the dropdown list.  Check to see if that works
> for you - on the insert.
Actually this should be self."RegID".PositionValue=0. Position returns or sets 
the position of the control on the form whereas PositionValue selects the 
index value of the Choices.  This works only if the PositionValue being set 
is different from the value that is already there. As the values that appear 
when a new record is created are the correct default values I want to keep 
them. I have run through everything several times and my original analysis 
holds, the values in the Dropdown Lists are not being picked up for inclusion 
in the INSERT statement.  
Before I go any further I want to make I understand SaveNewUnchanged. If it is 
set to False (the Default setting) , when one saves a new record only the 
field values in the ui that were entered by hand or changed are saved. If it 
is set to True all values in a new record are saved.  Even though I have 
SaveNewUnchanged = True it is acting like =False. In other words though the 
values for each Dropdown List is set it not being picked up the process the 
builds the INSERT query. At this point I know this is what is happening or 
not happening as the case may be. I would suggest creating a test form with 
Dropdown lists and try it for yourself. 
Furthermore I am not sure I believe that there is no interaction between the 
control and the database in regards to default values, at least for Dropdown 
Lists. If I do not have the database default value as one of the Choices or 
Keys then I get the error- 'ValueError: String must be present in the 
choices.' when I create a new record. This is before I do anything with the 
record. The behavior of the DropDown List when you create a new record is the 
same as when you navigate through existing records, the displayed value and 
the control property Value are both equal to the database value. In the case 
of a new record this is the database default value for the column, unless the 
Choice or Key lists don't have the value in which case the value is 
PositionValue=0. This is the same behavior observed when navigating existing 
records. By the way I regard this as a bug as it leads the user to thinking 
they are looking at the actual value for the field when in fact they are not. 
The error output to the terminal shows the ValueError mentioned above , 
however it is not propagated to the ui.  Again set up a test form and see 
what happens, I know what I am seeing. 
As to the constraint issues, they are after the fact issues. They occur 
because the INSERT statement is not supplying the necessary values to the 
database. Yes, I can and have (see my previous posts) run the new() procedure 
without constraints. It was successful in that the INSERT succeeded but 
failed in that it did not INSERT all the values from the form record to the 
database record. 
>
> Later you can use validation to better control the input from the user.

-- 
Adrian Klaver
[EMAIL PROTECTED]


_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message: http://leafe.com/archives/byMID/dabo-users/[EMAIL PROTECTED]

Reply via email to