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.

