Edit Data in Database
A table component can do more than show data from a database. A properly configured table can make the data of the table accessible to the client and allow the user to edit the data in realtime. Suppose your database had a table like this:
id |
UserName |
FirstName |
LastName |
Notes |
|
1 |
JS |
John |
Smith |
Likes bikes |
|
2 |
LJ |
Luke |
Johnson |
Lives in town |
|
3 |
PB |
Peter |
Burke |
Enjoys cooking |
The following is an example of using the Table component as opposed to the Power Table component.
-
Start with a window that has a Table on it.
-
Bind the Table's Data property to a SQL table.
The data will appear in the table.
-
Right-click on the Table and select Customizers > Table Customizer.
-
Select the Editable check box for each of the table's columns that the user will be editing.
-
Right-click the table and select Scripting.
-
Creat e a script in the table's cell > cellEdited event handler.
Using the following script will allow your table to be editable from a Client. The script works with a table that looks like the table above. Your table may be different.
Edit Databaseid=event.source.data.getValueAt(event.row,'id')#Get the id of the database column.headers=system.dataset.getColumnHeaders(event.source.data)#Get the headersquery="UPDATE User SET %s = ? WHERE id = ?"%(headers[event.column])args=[event.newValue,id]system.db.runPrepUpdate(query, args)
The following is an example of using the Power Table component.
-
Start with a window that has a Table on it.
-
Bind the Table's Data property to a SQL table.
The data will appear in the table. -
Right-click on the Table and select Customizers > Table Customizer.
-
Select the Editable check box for each of the table's columns that the user will be editing.
-
Create a script in the table's onCellEdited extension function by selecting the onCellEdited extension function. Enable the function.
Using the following script will allow your table to be editable from a Client. The script works with a table that looks like the table above. Your table may be different.
Edit Databaseid=self.data.getValueAt(rowIndex,'id')#Get the id of the database column.query="UPDATE User SET %s = ? WHERE id = ?"%(colName)args=[newValue,id]system.db.runPrepUpdate(query, args)system.db.refresh(self,"data")