Subject |
Re: Form to Form |
From |
Ken Mayer <dbase@nospam.goldenstag.net> |
Date |
Tue, 9 May 2023 13:44:42 -0700 |
Newsgroups |
dbase.getting-started |
On 5/9/2023 1:04 PM, Peter wrote:
> I am having trouble linking the data file from one for to a second form. In form1 there is a grid from which the user can choose a name (First name and Second Name) or ID# (a numeric field with length of 5).
> Once a name has been highlighted, a pushbutton will take the user to a second form, form2, to edit all fields. Same data file in each. But I am having trouble using the ID# either as a parameter or a memory variable from form1 to add to sql statement so form2 can show all fields.
> I had this problem solved a few weeks ago, but after messing around the sql won't work.
> I am copying some code for your benefit.
> Entryfield1 allows user to enter either ID# or part of Last Name. I use isalpha() to change index depending on whether entryfield1 starts with a letter or a number. That works to show ID# or name in selected order.
>
> I look forward to your help.
> Peter
>
>
> FROM FORM1 -- has GRID
> function PBGOTO_onClick()
> if isalpha(form.ENTRYFIELD1.value)
> form.entryfield1.value = form.patient1.rowset.fields["pat_no"].value+" -- "+;
> TRIM(form.patient1.rowset.fields["lname"].value)+", " + ;
> form.patient1.rowset.fields["fname"].value
> else
> form.entryfield1.value = form.patient1.rowset.fields["pat_no"].value
> endif
> form.entryfield1.value = form.patient1.rowset.fields["pat_no"].value
> mgoto = form.patient1.rowset.fields["pat_no"].value
> DO editpattest.wfm with true,mgoto
Okay, better:
set procedure to editpattest.wfm
oNewForm = new editpattestform()
oNewForm.mdi := true
// custom property of the new form:
oNewForm.mGoto = form.patient1.rowset.fields["pat_no"].value
oNewForm.readModal()
oNewForm.release()
oNewForm = null
close procedure editpattest.wfm
> form.close()
> return
>
> BOOTSTRAP OF FORM2
> parameter bModal, mgoto
> local f
> f = new EditPatTestForm()
> if (bModal)
> f.mdi = false // ensure not MDI
> f.readModal()
> else
> f.open()
> endif
>
> QUERY OF FORM2
> this.DATABASE1 = new DATABASE(this)
> with (this.DATABASE1)
> left = 728.0
> top = 11.0
> width = 53.0
> height = 37.0
> databaseName = "MYTEST"
> active = true
> endwith
>
> this.QUERY1 = new QUERY(this)
> with (this.QUERY1)
> left = 812.0
> top = 11.0
> width = 39.0
> height = 37.0
> database = form.database1
> databaseName = "MYTEST"
> sql = "select * from patienttest" // where pat_no = mgoto" I tried this; does not work
> indexName = "pat_no"
> active = true
> //this.rowset.fields["pat_no"].value = mgoto //I tried this; does not work
> endwith
>
>
> TEST OF Form_onOpen
>
> function form_onOpen()
> /* d = new database()
> d.databasename := "MyData"
> d.active := true
> patient1 = new query()
> database := d
> sql := "select * from patienttest"
> active := true
> rowset.indexname := "pat_no"
> rowset.fields["pat_no"]=100 //a test of random "pat_no" does not work
> */
> msgbox("Param: "+mgoto) //This works: shows mgoto value
> //form.query1.rowset.fields["pat_no"].value = mgoto //BUT this does not work
Too much in the onOpen():
if type( "form.mGoto" ) == "N"
form.query1.rowset.findKey( mGoto ) // similar to seek
? "Value of some other field ...: "
+form.query1.rowset.fields["fieldname"].value
else
? "Type of mGoto: " + type( "form.mGoto" )
endif
Note that this is untested. The idea is to not pass the value as a
parameter, but to create a custom property on the new form ... then you
can reference it as "form.MyCustomPropertyName" ...
Ken
--
*Ken Mayer*
Ken's dBASE Page: http://www.goldenstag.net/dbase
The dUFLP: http://www.goldenstag.net/dbase/index.htm#duflp
dBASE Books: http://www.goldenstag.net/dbase/Books/dBASEBooks.htm
dBASE Tutorial: http://www.goldenstag.net/dbase/Tutorial/00_Preface.htm
dBASE Web Tutorial: http://www.goldenstag.net/dbase/WebTutorial/00_Menu.htm
dBASE DOS to Windows Tutorial:
http://www.goldenstag.net/dbase/DtoWTutorial/00_Menu.htm
|
|