Ich bin ein Base / Basic Neuling und versuche einen Datenbankdesign, mit Base-formulare, umzusetzen. Leider bin ich dabei auf einige Grenzen gestoßen z.b n:m beziehungen usw.
Ich will eine Firma ,mit der dazu gehörigen PLZ und Ort, in ein Formular ausgeben. Nach der Normalisierung kam ich zum folgenden Datenbank-entwurf. Es gibt mehre Firmen in einen Ort und ein Ort kann mehre PLZ haben. Also hab ich in Mysql 4 Tabellen erstellt. Eine ist tbl_firmen die zweite ist tbl_Plz , die dritte tbl_Ort und die vierte tbl_plzort, um die n:m Beziehung zwischen Ort und Firma aufzulösen. In tbl_plzort sind die IDs der PLz und des Ortes gegenübergestellt. In tbl_Firmen ist die ID von tbl_plzort hinterlegt. soweit so gut^^.
Ich habe dann in Base eine Abfrage erstellt :
Code: Alles auswählen
SELECT `firma`.`Firmenname`, `firma`.`Straße`, `firma`.`Hausnummer`, `firma`.`Internetauftritt`, `ort`.`Ort`, `ort`.`Land`, `plz`.`plz` FROM `tbl_firmen` AS `firma` INNER JOIN `tbl_plzort` AS `po` ON `firma`.`ID_plzort_FK` = `po`.`ID_plzort` INNER JOIN `tbl_plz` AS `plz` ON `po`.`ID_plz_FK` = `plz`.`ID_plz` INNER JOIN `tbl_ort` AS `ort` ON `ort`.`ID_ort` = `po`.`ID_ort_FK`
Mein Problem:
1. Jetzt wird mir zwar die Firma der Ort und die Plz angezeigt aber ich kann denn Ort mit der dazugehörigen PLz nicht ändern !
Ich weiss das da nur Basic helfen kann (vermute ich jetzt mal) Aber weiss nicht wo und wie ich anfangen muss
Ein weiteres Problem:
Ich habe dann einfach mal versucht mir den Ort und den dazugehörigen PLZs anzuzeigen. Als
Beispiel habe ich Berlin mit den PLz 10023 und 13068.
Habe das mit ein Subformular erstmal gelöst. Diese Lösung erschien mir aber sehr unpraktikabel und nach etwas stöbern in diesen Forum habe ich dann ein Makro erstellt das mir die Postleitzahlen in einer Listenbox anzeigt. Hier das Makro
Code: Alles auswählen
Sub sql_where_in_listbox
dim oForm as object
dim oList as object
Dim new_sql(0) As string
oForm=thiscomponent.drawpage.forms
' <cond> ist der Wert vom Hauptformular, der als Bedingung in der WHERE clause des Listenfeld-SQLs benutzt wird:
cond=oForm.getByName("Ort").getByName("fmtID_ort").getCurrentValue
if isEmpty( cond ) then cond = "null"
oList=oForm.getByName("Ort").getByname("ListBox")
CurrentController.getControl(oList)
' SQL statement für das Listenfeld
new_sql(0) = "Select tbl_plz.plz from tbl_plzort inner join tbl_plz ON tbl_plz.ID_plz = tbl_plzort.Id_plz_FK where id_ort_FK =" & cond
oList.Listsource = new_sql 'ValueItemList(new_sql)
end sub

Ich hoffe ihr schreckt nicht vor den langen Text hier ab

gruß Massi...
p.s ich habe Openoffice 3.1 installiert mit xTray tool