Q:
Why does my keylookup returns false?
I want to connect my company_code [vt_employee] to the company_code[vt_company] to get the company name.
Here is my scenario:
1. I am using virtual tables from a mysql engine and successfully created a db in Lianja. The MySQL db itself had indexes.
2. Since the keylookup deals with indexes, I was thinking that perhaps my indexes were not incorporated to the virtual tables so I added the indexes in the console.
ALTER TABLE vt_employee ADD FOREIGN KEY (company_code) TAG company_code;
3. Added keylookup code :
(Get Data Map)
Code:
keylookup("vt_company", "company_code", "{}", name)
(Set Data Map)
Code:
keylookup("vt_company", "name", "{}", company_code)
Did I misunderstand the process or did I miss something? It doesnt work on the grid and on the form
A:
This usage of data mapping against virtual tables using KEYLOOKUP() is not supported.
Index lookups in Lianja are only relevant to the embedded database engine.
With external SQL databases you need to perform a SQL SELECT in the get/set data mapping. You can accomplish this using a Lianja function in a custom library.
Be sure to create native indexes on the columns you want to lookup so that the query optimizer will use them for high speed row selections.
There have been several requests to provide the ability to drop down pick lists and custom forms beneath a UI control when editing a desktop form section.
I have added in some new functionality to enable this.
The “Form” class now has a new method called showDropDown(cControlID, nWidth, nHeight)
cCcontrolID is in the page1.section1.field1 notation and it identifies the UI control that you want to attach the DropDown Form to.
You can create the form inside a “DialogButton” delegate or in a hotkey delegate if you want to use function keys to drop down pick lists.
Hint: add a container to the form and set its layout to “grid” is the easiest way to create a responsive UI form.
Code:
// Example
myForm = createObject(“Form”)
// add a search panel, grid and command buttons
myForm.showDropDown(“page1.section1.field21”, 250, 250)
// You should have a means the close the DropDown Form such as a CommandButton click event
myForm.close()
// closing the form will not destroy it rather it will hide it so it can be dropped down again
This mechanism opens up a lot of possibilities for pick lists with complex query forms. I will post some screenshots in due course.
I want to share with all the user some line of code to test this new feathure.
This is the result
when I click on the dialogbutton, I display the dropdown form
in the interacticechange of the text box I filter on real time the table, by select the row and click "OK", the ProductId are copied to the table..
Code:
proc sp_close_handler()
p_myform.close()
endproc
proc sp_ok_handler()
p_myform.close()
replace ORDER_DETAILS.PRODUCTID with myprod.productid
lianja.get("sampleproductsentry.section3.field2").text = etos(myprod.productid)
endproc
proc sp_change()
select * from products where etos(products.productid) like "*" + p_searchbox.text + "*" or products.productname like "*" + p_searchbox.text + "*" into cursor myprod
p_mygrid.refresh()
p_searchbox.setfocus()
endproc
////////////////////////////////////////////////////////////////
// Event delegate for 'dialogbutton' event
proc productiddropdownsearch()
public p_myform, p_searchbox, p_mygrid
p_myform = createObject("Form")
p_myform.resize(600, 500)
p_myform.addObject("mycont", "Container")
mycont.layout = "Grid"
mycont.autosize = 1
mycont.addObject("oContTop", "container", 0, 0)
oContTop.backcolor = "gold"
oContTop.fixedheight = 25
oContTop.margin = 20
// TOP
oContTop.addObject("o_combo", "Combobox")
o_combo.move(1, 1, 120, 20)
o_combo.additem("a")
o_combo.additem("b")
o_combo.additem("c")
oContTop.addobject("searchbox", "textbox")
searchbox.move(130, 1, 120, 20)
searchbox.interactivechange = sp_change
p_searchbox = searchbox
// MIDDLE
mycont.addObject("oContMiddle", "container", 1, 0)
oContMiddle.backcolor = "lightgreen"
oContMiddle.autosize = 1
p_oContMiddle = oContMiddle
// BOTTOM
mycont.addObject("oContBottom", "container", 2, 0)
oContBottom.backcolor = "lightgray"
oContBottom.fixedheight = 25
oContBottom.addObject("sp_close", "commandbutton")
sp_close.move(1, 1, 60, 20)
sp_close.text = "Close"
sp_close.click = sp_close_handler
oContBottom.addObject("sp_ok", "commandbutton")
sp_ok.move(80, 1, 60, 20)
sp_ok.text = "Ok"
sp_ok.click = sp_ok_handler
select * from products into cursor myprod // This could be a parameterized multi-table join
p_mygrid = oContMiddle.browse("browse noedit noactionbar", "myprod") // last 2 args are optional
// note that the grid object is returned from browse() so you can set properties and call methods on it
p_myform.showDropDown("sampleproductsentry.section3.field2", 400, 360)
endproc
I do not see the scoll bar.. :-)
A:
Did you try form's attribute Scrollbars >0 ?
Scrollbars |
RW |
Numeric |
Scrollbars: 0 = none, 1 = horizontal, 2 = vertical, 3 = both |
A2:
a few suggestions.
1. You can press escape to close the dropDownForm.
2. You can double click a grid row to call the dblclick() proc that you can specify on the browse() call. That could be set to your ok button clicked handler.
3. If the third parameter to showDropDown() is 0 then the form width will auto adjust to the width of the textbox.
scrollbars on the grid will appear if more rows than can be seen in the viewport and pagination is false.
Q2:
I've try to set the right layout for the grid, but how can I set the pagination property for tge grid?
The rows displayed on the grid is greater than the row visible..
How can I set the height and width of the grid inside the container?
A:
Because you are laying out the form using a grid layout you should remove the setting of autosize from oContMiddle. A grid layout will autosize into the grid cells automatically.
All topics in [Answers] alphabetically: https://www.lianja.com/community/sho...ll=1#post13748
These answers are also systematized on the site "Lianja developer": https://lianjadeveloper.wordpress.co...cklist-lookup/
Bookmarks