1) You must embed the DataSource on "centre" inside a DataSource on
"country" which points at the current country.
2) The name of the country primary key must be the same in all tables,
so that Gambas automatically detects them.
Thanks, Benoit. I understand a little better.
Now I have:
the Primary Key for the country table as country_id,
country_id for the Foreign Key (to the country table) in the centre table.
DataBrowserCentre embedded in DataSourceCentre
which is embedded in DataSourceCountry,
DataSourceCountry.Filter as "country_id = " & CountryId,
DataSourceCentre.Filter as "country_id = " & CountryId),
(where CountryId is a variable containing the appropriate value).
I've started with a new database (i.e. all tables are empty of data). The
relevant code for the button to start Centre Maintenance is:
Public Sub ButtonCentreMaintenance_Click()
Dim hForm As FCentreMaintenance
Print "CountryId=", CountryId
hform = New FCentreMaintenance
hForm.TextBoxCountry.Text = Country
hForm.TextBoxCountryId.Text = CountryId
hForm.DataSourceCountry.Connection = MDatabase.DatabaseConnection
hForm.DataSourceCountry.Table = "country"
hForm.DataSourceCountry.Filter = "country_id = " & CountryId
Print "hForm.DataSourceCountry.Filter = ", hForm.DataSourceCountry.Filter
hForm.DataSourceCountry.Update()
hForm.DataSourceCentre.Connection = MDatabase.DatabaseConnection
hForm.DataSourceCentre.Table = "centre"
hForm.DataSourceCentre.Filter = "country_id = " & CountryId
Print "hForm.DataSourceCentre.Filter = ", hForm.DataSourceCentre.Filter
hForm.DataSourceCentre.Update()
hForm.Refresh()
hForm.DataBrowserCentre.Columns = ["centre", "country_id"]
hForm.DataBrowserCentre.Labels = ["Centre", "CountryId"]
hForm.DataBrowserCentre.Editable = True
hForm.DataBrowserCentre.Update()
hForm.DataBrowserCentre.SetFocus()
hForm.Show()
End
I have code for opening the form to do Centre maintenance;
Public Sub Form_Open()
Print "FCentreMaintenance form opens"
FMain.Hide()
Me.Center()
Print "FMain.ClearComboBoxCentre starting"
FMain.ClearComboBoxCentre()
FMain.ClearComboBoxLocation()
Print "FMain.ClearComboBoxCentre finished"
End
However, I'm now getting an "Out of Bounds".
The console is shown below. I can see that the form open code is finishing as
normal.
Any ideas on how to debug this?
CountryId= 1
hForm.DataSourceCountry.Filter = country_id = 1
hForm.DataSourceCentre.Filter = country_id = 1
FCentreMaintenance form opens
FMain.ClearComboBoxCentre finished
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Gambas-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gambas-user