I double checked my scheduler and found out a problem and fixed; right now 
it is working as expected. Thanks for the help and guidance. 

On Wednesday, 29 April 2015 17:19:44 UTC-4, Aydin S wrote:
>
> Yes, I got it, thanks. There is one problem regarding scheduler though.
> In my controller I have:
>
> def index():
>
>     form = SQLFORM(db.Table1).process()
>     P = db().select(db.Table1.X, orderby=~db.Table1.id, limitby=(0, 1))
>     row = P[0]
>     final = row.X
>     return dict(form=form, final=final)
>
> In the view this exactly show the value of the record which I wanted.
>
> Then in my scheduler I use final as follows:
>
> if final > 10
>     do something
> ....
>
> This does not work. I have checked to see if my scheduler algorithm is 
> correct and it is because I can enter 20 instead of final or 1 and things 
> work as expected. 
> My scheduler is defined in the models.
> I wonder what the problem is? Is it because my scheduler does not see 
> final? I tried to make it global by (global final....) but this also did 
> not help.
> Thanks so much for the help
>
>
> On Wednesday, 29 April 2015 15:35:27 UTC-4, Anthony wrote:
>>
>> Note, this is all covered in the online documentation -- I suggest you 
>> skim through the chapter on the DAL: 
>> http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer
>>
>> A select returns a Rows object. You must then extract an individual Row 
>> from it, and then the individual field value from the Row. In your case, 
>> you want:
>>
>> X[0].X
>>
>> Anthony
>>
>> On Wednesday, April 29, 2015 at 2:38:05 PM UTC-4, Aydin S wrote:
>>>
>>> Thanks Anthony, This works fine, I also added the field name because I 
>>> want to get only the value of X, so I used:
>>> db(db.Table1).select(db.Table1.X, orderby=~db.Table1.id, limitby=(0, 1))
>>> However, this does not return the value, I used:
>>> def index():
>>> form = SQLFORM(db.Temp).process()
>>> X = db(db.Table1).select(db.Table1.X, orderby=~db.Table1.id, limitby=(0, 
>>> 1))
>>> return (form=form,X=X)
>>> Then I printed X in the view using {{=X}} which returns:
>>>
>>> Table1.X
>>> 10
>>>
>>> As you see this is a column, what I want is the number 10 only. Sorry if 
>>> this is so basic issue.
>>>
>>>
>>>
>>> On Wednesday, 29 April 2015 10:17:57 UTC-4, Anthony wrote:
>>>>
>>>> db.Table1.X is just a field object and doesn't refer to any record in 
>>>> the database. To retrieve a record, you must create a query. In most 
>>>> databases, you can just take the record with the largest ID:
>>>>
>>>> db(db.Table1).select(orderby=~db.Table1.id, limitby=(0, 1))
>>>>
>>>> That sorts in reverse order based on ID and takes the first record. 
>>>> Alternatively, you could include a record creation timestamp and sort 
>>>> based 
>>>> on that.
>>>>
>>>> Anthony
>>>>
>>>> On Wednesday, April 29, 2015 at 9:31:50 AM UTC-4, Aydin S wrote:
>>>>>
>>>>> Thank you, you are right, right now I have:
>>>>> def index():
>>>>>     form = SQLFORM(db.X).process()
>>>>>     return dict(form=form)
>>>>>
>>>>> and I see the database getting updated with new records. 
>>>>> One last question, I use db.Table1.X to refer to the last entered 
>>>>> record. However, this does not work. How can I make it use the last 
>>>>> entered 
>>>>> row?
>>>>>
>>>>> On Wednesday, 29 April 2015 08:27:22 UTC-4, Anthony wrote:
>>>>>>
>>>>>> See answer on SO: http://stackoverflow.com/a/29932995/440323
>>>>>>
>>>>>> On Tuesday, April 28, 2015 at 9:35:31 PM UTC-4, Aydin S wrote:
>>>>>>>
>>>>>>> It looks like the scheduler which is a model file does not see 
>>>>>>> variable X in the database!
>>>>>>>
>>>>>>> On Tuesday, 28 April 2015 21:19:14 UTC-4, Aydin S wrote:
>>>>>>>>
>>>>>>>> No, the value of the form gets processed every time the scheduler 
>>>>>>>> runs.
>>>>>>>>
>>>>>>>> On Tuesday, 28 April 2015 21:07:42 UTC-4, Dave S wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tuesday, April 28, 2015 at 6:01:04 PM UTC-7, Aydin S wrote:
>>>>>>>>>>
>>>>>>>>>> This is probably very simple, sorry in advance!
>>>>>>>>>> I have a form defined in a model file:
>>>>>>>>>> db.define_table('table1',
>>>>>>>>>>     Field('X', 'integer'))
>>>>>>>>>> I have a controller that is also defined as:
>>>>>>>>>> def index():
>>>>>>>>>>     form = SQLFORM(db.X)
>>>>>>>>>>     return dict(form=form)
>>>>>>>>>>  
>>>>>>>>>>
>>>>>>>>> In my index view file I have:
>>>>>>>>>>
>>>>>>>>>> <h2>Input form</h2>
>>>>>>>>>> {{=form}}
>>>>>>>>>>
>>>>>>>>>> I want to use value X in a scheduler defined as a model like:
>>>>>>>>>>
>>>>>>>>>> A = X+2
>>>>>>>>>>
>>>>>>>>>> The form shows up as expected. I enter a value in it and submit 
>>>>>>>>>> it. The scheduler is running as expected. However it looks like the 
>>>>>>>>>> value X 
>>>>>>>>>> never gets set to what I enter. 
>>>>>>>>>> Any idea?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> Do you process the form once the user has entered the input?
>>>>>>>>>
>>>>>>>>> /dps
>>>>>>>>>  
>>>>>>>>>
>>>>>>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to