Index: trunk/info/conf/alkis_www_conf.php
===================================================================
--- trunk/info/conf/alkis_www_conf.php	(revision 319)
+++ trunk/info/conf/alkis_www_conf.php	(revision 330)
@@ -5,4 +5,5 @@
 	2011-07-25  PostNAS 0.5/0.6 Versionen unterscheiden
 	2011-07-26  debug-Parameter zur Fehlersuche
+	2014-09-10  PostNAS 0.8
 */
 
@@ -13,5 +14,5 @@
 $dbpass = '***';
 $dbpre  = 'alkis';
-$dbvers = '06';
+$dbvers = '08';
 
 // Entwicklung / Produktion
Index: trunk/info/info/alkis/alkisfshist.php
===================================================================
--- trunk/info/info/alkis/alkisfshist.php	(revision 319)
+++ trunk/info/info/alkis/alkisfshist.php	(revision 330)
@@ -10,4 +10,5 @@
 	2012-11-27  Function split deprecated: explode
 	2013-04-08  deprecated "import_request_variables" ersetzt
+	2014-09-03  PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
 */
 
@@ -249,5 +250,5 @@
 		echo "\n\t</tr>";
 	echo "\n\t</table>";
-	if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck"); }
+	if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck", "ax_flurstueck"); }
 echo "\n\t</td>\n</tr>\n</table>";
 
@@ -270,5 +271,5 @@
 	</tr>"; // Head
 	
-	// Spalte 1: F l u r s t ÃÂŒ c k
+	// Spalte 1: F l u r s t ÃŒ c k
 	echo "\n<tr>\n\t<td>";
 		echo "<img src='ico/".$ico."' width='16' height='16' alt=''> ".$wert;
@@ -276,5 +277,5 @@
 	echo "</td>";
 
-	// Spalte 2: V o r g ÃÂ€ n g e r
+	// Spalte 2: V o r g Ã€ n g e r
 	echo "\n\t<td>";
 	switch ($ftyp) { // Unterschiede Historisch/Aktuell
Index: trunk/info/info/alkis/alkishaus.php
===================================================================
--- trunk/info/info/alkis/alkishaus.php	(revision 319)
+++ trunk/info/info/alkis/alkishaus.php	(revision 330)
@@ -6,5 +6,7 @@
 	2011-11-30 NEU! Variante von alkisgebaeudenw: Aufruf fÃŒr EIN Haus, nicht fÃŒr ein FS
 	2011-01-31 ax_gebaeude.weiteregebaeudefunktion ist jetzt Array
-	2013-04-08  deprecated "import_request_variables" ersetzt
+	2013-04-08 deprecated "import_request_variables" ersetzt
+	2014-09-03 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
 
 	ToDo:
@@ -53,14 +55,12 @@
 $sqlg.="h.bauweise_beschreibung, u.bezeichner AS bfunk, z.bezeichner AS bzustand, ";
 // "w.bezeichner AS bweitfunk, ";
-$sqlg.="d.bezeichner AS bdach, round(area(g.wkb_geometry)::numeric,2) AS gebflae ";
-$sqlg.="FROM ax_gebaeude g ";
-
+$sqlg.="d.bezeichner AS bdach, round(area(g.wkb_geometry)::numeric,2) AS gebflae FROM ax_gebaeude g ";
 // Entschluesseln
-$sqlg.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise = h.bauweise_id ";
-$sqlg.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion = u.wert ";
-$sqlg.="LEFT JOIN ax_gebaeude_zustand z ON g.zustand = z.wert ";
-$sqlg.="LEFT JOIN ax_gebaeude_dachform d ON g.dachform = d.wert ";
-
-$sqlg.="WHERE g.gml_id= $1 "; // ID des Hauses
+$sqlg.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise=h.bauweise_id ";
+$sqlg.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion=u.wert ";
+$sqlg.="LEFT JOIN ax_gebaeude_zustand z ON g.zustand=z.wert ";
+$sqlg.="LEFT JOIN ax_gebaeude_dachform d ON g.dachform=d.wert ";
+
+$sqlg.="WHERE g.gml_id= $1 AND g.endet IS NULL ;";
 
 $v = array($gmlid);
@@ -73,5 +73,5 @@
 
 // Balken
-echo "<p class='geb'>ALKIS Haus ".$gmlid."&nbsp;</p>\n"; // +++ Kennzeichen = ?
+echo "<p class='geb'>ALKIS Haus ".$gmlid."&nbsp;</p>\n"; // ++ Kennzeichen?
 
 echo "\n<h2><img src='ico/Haus.ico' width='16' height='16' alt=''> Haus (Geb&auml;ude)</h2>\n";
@@ -79,5 +79,5 @@
 // Kennzeichen in Rahmen 
 // - Welches Kennzeichen zum Haus ?
-if ($idanzeige) {linkgml($gkz, $gmlid, "Haus"); }
+if ($idanzeige) {linkgml($gkz, $gmlid, "Haus", "ax_gebaeude"); }
 echo "\n<hr>";
 // Umschalter: auch leere Felder ausgeben?
@@ -90,5 +90,5 @@
 echo "</a></p>";
 
-while($rowg = pg_fetch_array($resg)) { // Als Schleife, kann aber nur EIN Haus sein.
+while($rowg = pg_fetch_array($resg)) { // Schleife, kann aber nur EIN Haus sein.
 	$gebnr++;
 	echo "\n<table class='geb'>";
@@ -130,18 +130,18 @@
 	// 0 bis N Lagebezeichnungen mit Haus- oder Pseudo-Nummer
 	// HAUPTgebÃ€ude
-	$sqll ="SELECT 'm' AS ltyp, v.beziehung_zu, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer ";
-	$sqll.="FROM alkis_beziehungen v "; 
-	$sqll.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
+	$sqll ="SELECT 'm' AS ltyp, l.gml_id AS gmllag, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer ";
+	$sqll.="FROM ax_gebaeude g ";
+	$sqll.="JOIN ax_lagebezeichnungmithausnummer l ON substring(l.gml_id,1,16)=ANY(g.zeigtauf) ";
 	$sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
-	$sqll.="WHERE v.beziehungsart = 'zeigtAuf' AND v.beziehung_von = $1 ";
+	$sqll.="WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL ";
 	$sqll.="UNION ";
 	// oder NEBENgebÃ€ude
-	$sqll.="SELECT 'p' AS ltyp, v.beziehung_zu, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer ";
-	$sqll.="FROM alkis_beziehungen v "; 
-	$sqll.="JOIN ax_lagebezeichnungmitpseudonummer l ON v.beziehung_zu=l.gml_id ";
+	$sqll.="SELECT 'p' AS ltyp, l.gml_id AS gmllag, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer ";
+	$sqll.="FROM ax_gebaeude g "; 
+	$sqll.="JOIN ax_lagebezeichnungmitpseudonummer l ON substring(l.gml_id,1,16)=g.hat ";
 	$sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
-	$sqll.="WHERE v.beziehungsart = 'hat' AND v.beziehung_von = $1 "; // ID des Hauses"
-
-	$sqll.="ORDER BY bezeichnung, hausnummer ";
+	$sqll.="WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL ";
+
+	$sqll.="ORDER BY bezeichnung, hausnummer ;";
 
 	$v = array($gmlid);
@@ -160,5 +160,5 @@
 		$hsnr=$rowl["hausnummer"];
 		$hlfd=$rowl["laufendenummer"];
-		$gmllag=$rowl["beziehung_zu"];
+		$gmllag=$rowl["gmllag"];
 
 			if ($zhsnr == 1) {
@@ -174,5 +174,5 @@
 				if ($ltyp == "p") { echo ", lfd.Nr ".$hlfd;}
 			echo "</a>";
-			if ($idanzeige) {linkgml($gkz, $gmllag, "Lage"); }
+			if ($idanzeige) {linkgml($gkz, $gmllag, "Lage", ""); }
 			echo "<br>";
 	} // Ende Loop Lagezeilen m.H.
Index: trunk/info/info/alkis/alkisinlayausk.php
===================================================================
--- trunk/info/info/alkis/alkisinlayausk.php	(revision 319)
+++ trunk/info/info/alkis/alkisinlayausk.php	(revision 330)
@@ -18,4 +18,6 @@
 	2014-01-28 Link zu alkisstrasse.php
 	2014-02-06 pg_free_result
+	2014-09-04 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
 */
 session_start();
@@ -51,5 +53,5 @@
 // *** F L U R S T U E C K ***
 $sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung ";
-$sql.="FROM ax_flurstueck f LEFT JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
+$sql.="FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
 $sql.="WHERE f.gml_id= $1 ;";
 // Weiter joinen: g.stelle -> ax_dienststelle "Katasteramt"
@@ -109,10 +111,10 @@
 
 // Lage MIT HausNr (Adresse)
-$sql ="SELECT DISTINCT s.gml_id AS kgml, l.gml_id, s.bezeichnung, l.hausnummer ";
-$sql.="FROM alkis_beziehungen v JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id "; // Strassennamen JOIN
-$sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
-$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart='weistAuf' "; // id FS";
-$sql.="ORDER BY s.bezeichnung, l.hausnummer;";
-$v=array($gmlid);
+$sql ="SELECT DISTINCT s.gml_id AS kgml, l.gml_id, s.bezeichnung, l.hausnummer 
+FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON substring(l.gml_id,1,16)=ANY(f.weistauf)
+JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage 
+WHERE f.gml_id= $1 ORDER BY s.bezeichnung, l.hausnummer;";
+
+$v=array($gmlid); // id FS
 $res=pg_prepare("", $sql);
 $res=pg_execute("", $v);
@@ -143,8 +145,9 @@
 if ($j == 0) { // keine HsNr gefunden
 	// Lage OHNE HausNr
-	$sql ="SELECT DISTINCT s.gml_id AS kgml, l.gml_id, s.bezeichnung, l.unverschluesselt ";
-	$sql.="FROM alkis_beziehungen v JOIN ax_lagebezeichnungohnehausnummer l ON v.beziehung_zu=l.gml_id ";
-	$sql.="LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
-	$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart='zeigtAuf' ORDER BY s.bezeichnung ;";
+	$sql ="SELECT DISTINCT s.gml_id AS kgml, l.gml_id, s.bezeichnung, l.unverschluesselt 
+	FROM ax_flurstueck f JOIN ax_lagebezeichnungohnehausnummer l ON substring(l.gml_id,1,16)=ANY(f.zeigtauf)
+	LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage 
+	WHERE f.gml_id= $1 ORDER BY s.bezeichnung;";
+
 	$v=array($gmlid);
 	$res=pg_prepare("", $sql);
@@ -187,14 +190,13 @@
 // *** G R U N D B U C H ***
 echo "\n<h2><img src='ico/Grundbuch_zu.ico' width='16' height='16' alt=''> Grundbuch</h2>";
-// ALKIS: FS --> bfs --> GS --> bsb --> GB.
-$sql ="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, ";
-$sql.="s.gml_id AS s_gml, s.buchungsart, s.laufendenummer, s.zaehler, s.nenner, z.bezeichnung, a.bezeichner AS bart ";
-$sql.="FROM alkis_beziehungen bfs JOIN ax_buchungsstelle s ON bfs.beziehung_zu=s.gml_id ";
-$sql.="JOIN alkis_beziehungen bsb ON s.gml_id=bsb.beziehung_von "; // Bez.Stelle-Blatt
-$sql.="JOIN ax_buchungsblatt b ON bsb.beziehung_zu=b.gml_id ";
-$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
-$sql.="LEFT JOIN ax_buchungsstelle_buchungsart a ON s.buchungsart = a.wert ";
-$sql.="WHERE bfs.beziehung_von= $1 AND bfs.beziehungsart='istGebucht' AND bsb.beziehungsart='istBestandteilVon' ";
-$sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer;";
+// FS >istgebucht> GS >istbestandteilvon> GB.
+$sql ="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, 
+s.gml_id AS s_gml, s.buchungsart, s.laufendenummer, s.zaehler, s.nenner, z.bezeichnung, a.bezeichner AS bart 
+FROM ax_flurstueck f JOIN ax_buchungsstelle s ON f.istgebucht=substring(s.gml_id,1,16) 
+JOIN ax_buchungsblatt b ON s.istbestandteilvon=substring(b.gml_id,1,16)
+LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk 
+LEFT JOIN ax_buchungsstelle_buchungsart a ON s.buchungsart=a.wert 
+WHERE f.gml_id= $1 ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer;";
+
 $v=array($gmlid);
 $resg=pg_prepare("", $sql);
@@ -255,5 +257,5 @@
 			echo "\n<p class='err'>Keine Eigent&uuml;mer gefunden.</p>";
 			echo "\n<p class='err'>Bezirk ".$rowg["bezirk"]." Blatt ".$rowg["blatt"]." Blattart ".$blattkey." (".$blattart.")</p>";
-			linkgml($gkz, $gmlid, "Buchungsblatt");
+			linkgml($gkz, $gmlid, "Buchungsblatt", "");
 		}
 	}
Index: trunk/info/info/alkis/alkisrelationen.php
===================================================================
--- trunk/info/info/alkis/alkisrelationen.php	(revision 319)
+++ trunk/info/info/alkis/alkisrelationen.php	(revision 330)
@@ -11,4 +11,13 @@
 	2011-11-30  import_request_variables
 	2013-04-08  deprecated "import_request_variables" ersetzt
+	2014-09-03 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+
+V o r l Ã€ u f i g   u n b e n u t z b a r 
+
+Dies Modul nutzte die gml_ids in der zentralen Tabelle 'alkis_beziehungen' um dort ALLE Relationen zu finden.
+Mit Umstellung auf Relationen-Spalten in den Objekt-Tabellen ist das nicht mehr mÃ¶glich.
+
+Neuentwicklung wahrscheimlich nicht sinnvoll.
+
 */
 session_start();
@@ -40,8 +49,18 @@
 } else {
 	echo "\n\n<h3 title='Die gml_is ist global eindeutig'>ALKIS-".$otyp." mit gml_id = '".$gmlid."'</h3>";
-	$sql="SELECT beziehungsart, beziehung_zu FROM alkis_beziehungen WHERE beziehung_von= $1;";
-	$v = array($gmlid);
-	$res = pg_prepare("", $sql);
-	$res = pg_execute("", $v);
+
+	// Zerlegen
+	echo "<h4>Zerlegung des Kennzeichens</h4>";
+	echo "<p>Land = '".substr($gmlid, 0, 2)."'</p>";
+	echo "<p>Bundesland = '".substr($gmlid, 2, 2)."'</p>";
+	echo "<p>Kreis = '".substr($gmlid, 4, 2)."'</p>";
+	echo "<p>Konstante = '".substr($gmlid, 6, 6)."'</p>";
+	echo "<p>Objekt-Nr = '".substr($gmlid, 12, 4)."'</p>";
+	echo "<p>Zeitstempel = '".substr($gmlid, 16)."'</p>";
+
+//	$sql="SELECT beziehungsart, beziehung_zu FROM alkis_beziehungen WHERE beziehung_von= $1;";
+//	$v = array($gmlid);
+//	$res = pg_prepare("", $sql);
+//	$res = pg_execute("", $v);
 
 	echo "\n<table>";
@@ -64,4 +83,6 @@
 		}
 	}
+
+/*
 	$sql="SELECT beziehungsart, beziehung_von FROM alkis_beziehungen WHERE beziehung_zu= $1;";
 	$v = array($gmlid);
@@ -88,4 +109,5 @@
 		}
 	}
+*/
 	echo "\n</table>";
 }
Index: trunk/info/info/alkis/alkisbestnw.php
===================================================================
--- trunk/info/info/alkis/alkisbestnw.php	(revision 319)
+++ trunk/info/info/alkis/alkisbestnw.php	(revision 330)
@@ -3,15 +3,16 @@
 
 	ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
-	Bestandsnachweis fuer ein Grundbuch aus ALKIS PostNAS
+	Bestandsnachweis fÃŒr ein Grundbuch aus ALKIS PostNAS
 
 	Version:
-	2011-11-17  Parameter der Functions geÃ€ndert
-	2011-11-22  Feldname land in ax_buchungsblattbezirk geÃ€ndert
-	2011-11-30  import_request_variables
-	2012-07-24  Export CSV
-	2013-04-08  deprecated "import_request_variables" ersetzt
-
-	ToDo:
-	Zahler fuer Anzahl GB und FS in der Liste (ausgeben wenn > 10)
+	2011-11-17 Parameter der Functions geÃ€ndert
+	2011-11-22 Feldname land in ax_buchungsblattbezirk geÃ€ndert
+	2011-11-30 import_request_variables
+	2012-07-24 Export CSV
+	2013-04-08 deprecated "import_request_variables" ersetzt
+	2014-09-10 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
+
+	ToDo: ZÃ€hler fuer Anzahl FS in der Liste
 */
 session_start();
@@ -51,15 +52,9 @@
 
 // G R U N D B U C H
-// Direkter JOIN zwischen den "ax_buchungsblattbezirk" und "ax_dienststelle".
-// Ueber Feld "gehoertzu|ax_dienststelle_schluessel|land" und "stelle".
-//	Bei JOIN ueber alkis_beziehungen entgegen Dokumentation keine Verbindung gefunden.
-$sql ="SELECT g.gml_id, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS nr, g.blattart, "; // GB-Blatt
-$sql.="b.gml_id, b.bezirk, b.bezeichnung AS beznam, "; // Bezirk
-$sql.="a.gml_id, a.land, a.bezeichnung, a.stelle, a.stellenart "; // Amtsgericht
-$sql.="FROM ax_buchungsblatt g ";
-$sql.="LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk ";  // BBZ
-$sql.="LEFT JOIN ax_dienststelle a ON b.land = a.land AND b.stelle = a.stelle ";
-$sql.="WHERE g.gml_id= $1 ";
-$sql.="AND a.stellenart=1000;"; // Amtsgericht
+$sql="SELECT g.gml_id, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS nr, g.blattart, 
+b.gml_id, b.bezirk, b.bezeichnung AS beznam, a.gml_id, a.land, a.bezeichnung, a.stelle, a.stellenart 
+FROM ax_buchungsblatt g LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk 
+LEFT JOIN ax_dienststelle a ON b.land=a.land AND b.stelle=a.stelle 
+WHERE g.gml_id= $1 AND a.stellenart=1000 AND g.endet IS NULL AND a.endet IS NULL;";
 
 $v = array($gmlid);
@@ -72,9 +67,9 @@
 }
 if ($row = pg_fetch_array($res)) {
-	$blattkey=$row["blattart"]; // Schluessel
+	$blattkey=$row["blattart"];
 	$blattart=blattart($blattkey);
 	echo "<p class='gbkennz'>ALKIS Bestand ".$row["bezirk"]." - ".$row["nr"]."&nbsp;</p>\n"; // Balken
 	echo "\n<h2><img src='ico/Grundbuch.ico' width='16' height='16' alt=''> Grundbuch</h2>";
-	echo "\n<table class='outer'>\n<tr>\n\t<td>"; // Kennzeichen im Rahmen
+	echo "\n<table class='outer'>\n<tr>\n\t<td>"; // Kennz. im Rahmen
 		if ($blattkey == 1000) {
 			echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>";
@@ -102,5 +97,5 @@
 
 		echo "\n\n\t</td>\n\t<td>";
-		if ($idanzeige) {linkgml($gkz, $gmlid, "Buchungsblatt");}
+		if ($idanzeige) {linkgml($gkz, $gmlid, "Buchungsblatt", "");}
 	echo "\n\t</td>\n</tr>\n</table>";
 }
@@ -111,20 +106,18 @@
 	echo "\n<h3><img src='ico/Eigentuemer_2.ico' width='16' height='16' alt=''> Angaben zum Eigentum</h3>\n";
 	$n = eigentuemer($con, $gmlid, true, ""); // MIT Adressen.
-	if ($n == 0) { // keine Namensnummer, kein Eigentuemer
+	if ($n == 0) { // keine NamensNr, kein Eigentuemer
 		echo "\n<p class='err'>Keine Namensnummer gefunden.</p>";
 		echo "\n<p>Bezirk: ".$row["bezirk"].", Blatt: ".$row["nr"].", Blattart ".$blattkey." (".$blattart.")</p>";
-		linkgml($gkz, $gmlid, "Buchungsblatt");
+		linkgml($gkz, $gmlid, "Buchungsblatt", "");
 	}
 }
 
 // Vorab pruefen, ob Sonderfall "Rechte an .." vorliegt.
-if ($blattkey == 1000) { // Grundbuchblatt
-	$sql ="SELECT count(z.laufendenummer) AS anzahl ";
-	$sql.="FROM alkis_beziehungen v ";
-	$sql.="JOIN ax_buchungsstelle s ON v.beziehung_von=s.gml_id "; // Blatt
-	$sql.="JOIN alkis_beziehungen x ON x.beziehung_von=s.gml_id "; 
-	$sql.="JOIN ax_buchungsstelle z ON x.beziehung_zu=z.gml_id "; // andere B-Stelle
-	$sql.="WHERE v.beziehung_zu= $1 AND v.beziehungsart='istBestandteilVon' AND (x.beziehungsart='an' OR x.beziehungsart='zu');";
-	$v=array($gmlid);
+if ($blattkey == 1000) { // GB-Blatt  <istBestandteilVon<  sh=herrschend  >an>  sd=dienend
+	$sql="SELECT count(sd.laufendenummer) AS anzahl
+	FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON (substring(sd.gml_id,1,16)=ANY(sh.an) OR substring(sd.gml_id,1,16)=ANY(sh.zu)) 
+	WHERE sh.istbestandteilvon= $1 AND sd.endet IS NULL AND sh.endet IS NULL;";
+
+	$v=array($gmlid); // GB-Blatt
 	$res=pg_prepare("", $sql);
 	$res=pg_execute("", $v);
@@ -166,12 +159,8 @@
 
 // Blatt ->  B u c h u n g s s t e l l e
-// ax_buchungsblatt <istBestandteilVon< ax_buchungsstelle 
-$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer AS lfd, s.beschreibungdesumfangsderbuchung AS udb, ";
-$sql.="s.zaehler, s.nenner, s.nummerimaufteilungsplan AS nrap, s.beschreibungdessondereigentums AS sond, b.bezeichner as bart ";
-$sql.="FROM ax_buchungsstelle s ";
-$sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von "; 
-$sql.="LEFT JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart = b.wert ";
-$sql.="WHERE v.beziehung_zu= $1 AND v.beziehungsart='istBestandteilVon' ";
-$sql.="ORDER BY s.laufendenummer;";
+// aktuelles ax_buchungsblatt <istBestandteilVon< ax_buchungsstelle 
+$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer AS lfd, s.beschreibungdesumfangsderbuchung AS udb, s.zaehler, s.nenner, s.nummerimaufteilungsplan AS nrap, s.beschreibungdessondereigentums AS sond, b.bezeichner as bart 
+FROM ax_buchungsstelle s LEFT JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart=b.wert 
+WHERE s.istbestandteilvon= $1 AND s.endet IS NULL ORDER BY cast(s.laufendenummer AS integer);";
 
 $v=array($gmlid);
@@ -184,4 +173,5 @@
 }
 $i=0;
+$fscnt=0;
 while($row = pg_fetch_array($res)) {
 	$lfdnr  = $row["lfd"];
@@ -196,34 +186,28 @@
 	}
 	// F l u r s t u e c k s d a t e n  zur direkten Buchungsstelle
-   $j = bnw_fsdaten($con, $lfdnr, $gml_bs, $ba, $anteil, true); // return = Anzahl der FS
-
+	$j = bnw_fsdaten($con, $lfdnr, $gml_bs, $ba, $anteil, true); // return=Anzahl der FS
+	$fscnt=$fscnt + $j;
 	if ($j == 0) { //  k e i n e  Flurstuecke gefunden (Miteigentumsnteil usw.)
 		// Bei "normalen" Grundstuecken wurden Flurstuecksdaten gefunden und ausgegeben.
 		// Bei Miteigentumsanteil, Erbbaurecht usw. muss nach weiteren Buchungsstellen gesucht werden:
-		//  Buchungsstelle >an/zu> (andere)Buchungsstelle >istBestandTeilVon>  "FiktivesBlatt (ohne) Eigentuemer"
+		//  Buchungsstelle >an/zu> (andere)Buchungsstelle >istBestandTeilVon> "FiktivesBlatt (ohne) Eigentuemer"
 
 		// andere Buchungsstellen
-		//  ax_buchungsstelle  >zu>  ax_buchungsstelle (des gleichen Blattes)
-		//  ax_buchungsstelle  >an>  ax_buchungsstelle (anderes Blatt, z.B Erbbaurecht an)
-
-		// aktuelles Blatt (herrschendes GB) hat Recht "an" fiktives Blatt (dienendes GB-Blatt)
-		// a n d e r e  Buchungsstelle
-		$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer AS lfd, s.beschreibungdesumfangsderbuchung AS udb, ";
-		$sql.="v.beziehungsart, s.nummerimaufteilungsplan AS nrap, s.beschreibungdessondereigentums AS sond, b.bezeichner AS bart ";
-		$sql.="FROM ax_buchungsstelle s ";
-		$sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_zu "; 
-		$sql.="LEFT JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart = b.wert ";
-		$sql.="WHERE v.beziehung_von= $1 "; // id buchungsstelle (fiktives Blatt)
-		$sql.="AND (v.beziehungsart='an' OR v.beziehungsart='zu') ";
-		$sql.="ORDER BY s.laufendenummer;";
+		//  ax_buchungsstelle >zu> ax_buchungsstelle (des gleichen Blattes)
+		//  ax_buchungsstelle >an> ax_buchungsstelle (anderes Blatt, z.B Erbbaurecht an)
+		//  sh=herrschend          sd=dienend
+		$sql ="SELECT sd.gml_id, sd.buchungsart, sd.laufendenummer AS lfd, sd.beschreibungdesumfangsderbuchung AS udb, sd.nummerimaufteilungsplan AS nrap, sd.beschreibungdessondereigentums AS sond, b.bezeichner AS bart ";
+		$sql.="FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON (sd.gml_id=ANY(sh.an) OR sd.gml_id=ANY(sh.zu)) "; 
+		$sql.="LEFT JOIN ax_buchungsstelle_buchungsart b ON sd.buchungsart=b.wert ";
+		$sql.="WHERE sh.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL ORDER BY sd.laufendenummer;";
+
 		$v=array($gml_bs);
 		$resan=pg_prepare("", $sql);
 		$resan=pg_execute("", $v);
-		//$resan=pg_query($con,$sql);
 		if (!$resan) {
 			echo "<p class='err'>Fehler bei 'andere Buchungsstelle'.</p>\n";
-			if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
+			if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
 		}
-		$a=0; // count: andere BS
+		$a=0; // count
 		$altbvnr=""; // Gruppenwechsel
 		while($rowan = pg_fetch_array($resan)) {
@@ -235,17 +219,13 @@
 			// dienendes Grundbuch
 			$sql ="SELECT b.gml_id, b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, b.blattart, z.bezeichnung AS beznam ";
-			$sql.="FROM ax_buchungsblatt  b ";
-			$sql.="JOIN alkis_beziehungen v ON b.gml_id=v.beziehung_zu ";
+			$sql.="FROM ax_buchungsblatt b JOIN ax_buchungsstelle s ON substring(b.gml_id,1,16)=s.istbestandteilvon ";
 			$sql.="LEFT JOIN ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk ";
-			$sql.="WHERE v.beziehung_von= $1 ";
-			$sql.="AND v.beziehungsart='istBestandteilVon' ";
-			$sql.="ORDER BY b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
+			$sql.="WHERE s.gml_id= $1 AND b.endet IS NULL ORDER BY b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
 			$v=array($gml_bsan);
 			$fbres=pg_prepare("", $sql);
 			$fbres=pg_execute("", $v);
-			//$fbres=pg_query($con,$sql);
 			if (!$fbres) {
 				echo "<p class='err'>Fehler bei fiktivem Blatt.</p>\n";
-				if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}			
+				if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}			
 			}
 			$b=0;
@@ -271,5 +251,5 @@
 						echo "<a name='bvnr".$lfdnr."'></a>"; // Sprungmarke
 						echo "<span class='wichtig'>".$bvnr."</span>"; // Sp.1 Erbbau BVNR
-						if ($idanzeige) {linkgml($gkz, $gml_bs, "Buchungsstelle");}
+						if ($idanzeige) {linkgml($gkz, $gml_bs, "Buchungsstelle", "ax_buchungsstelle");}
 						$altbvnr = $bvnr; // Gruppenwechsel merken
 					}
@@ -290,5 +270,5 @@
 					echo $fbblatt; // Sp.6 BVNR
 					if ($idanzeige) {
-						linkgml($gkz, $fbgml, "Buchungsblatt");
+						linkgml($gkz, $fbgml, "Buchungsblatt", "");
 					}
 				echo "</td>";
@@ -296,5 +276,5 @@
 					echo str_pad($lfdnran, 4, "0", STR_PAD_LEFT);
 					if ($idanzeige) {
-						linkgml($gkz, $gml_bsan, "Buchungsstelle");
+						linkgml($gkz, $gml_bsan, "Buchungsstelle", "ax_buchungsstelle");
 					}
 
@@ -307,5 +287,5 @@
 				echo "</td>";
 				echo "\n\t<td>";  // Sp.8 Link ("an" oder "zu" ?)
-					echo "<p class='nwlink'>".$rowan["beziehungsart"];
+					echo "<p class='nwlink'>an/zu"; //.$rowan["beziehungsart"] Feld gibt es nicht mehr
 					echo " <a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$fbgml;
 						if ($idanzeige) {echo "&amp;id=j";}
@@ -320,7 +300,7 @@
 			// F l u r s t u e c k s d a t e n  zur  a n d e r e n  Buchungsstelle
 			// Buchungsart wird nur in erster Zeile ausgegeben, hier leer
-		   $aj = bnw_fsdaten($con, $lfdnran, $gml_bsan, "", $anteil, false); // return = Anzahl der FS
-		   		   
-			// +++ Gibt es ueberhaupt Sondereigentum beim fiktiven Blatt??
+			$aj = bnw_fsdaten($con, $lfdnran, $gml_bsan, "", $anteil, false); // return=Anz.FS
+			$fscnt=$fscnt + $aj;
+			// +++ Gibt es Sondereigentum beim fiktiven Blatt?
 			if ($rowan["nrap"] != "") {
 				echo "\n<tr>";
@@ -339,5 +319,5 @@
 				echo "\n\t<td><span class='wichtig'>".$bvnr."</span>";
 				if ($idanzeige) {
-					linkgml($gkz, $gml_bs, "Buchungsstelle");
+					linkgml($gkz, $gml_bs, "Buchungsstelle", "ax_buchungsstelle");
 				}
 				echo "</td>";
@@ -349,5 +329,5 @@
 	}
 	$i++; 
-	if ($row["nrap"] != "") { // Nummer im Aufteilungsplan
+	if ($row["nrap"] != "") { // Nr im Auft.Plan
 		echo "\n<tr>";
 			echo "\n\t<td class='nrap' colspan=8>Nummer <span class='wichtig'>".$row["nrap"]."</span> im Aufteilungsplan.</td>";
@@ -358,117 +338,109 @@
 			echo "\n\t<td class='sond' colspan=8>Verbunden mit dem Sondereigentum an: ".$row["sond"]."</td>";
 		echo "\n</tr>";
-	}
-} // Ende Buchungsstelle
+	} // Ende Buchungsstelle/BVNR
+} // Ende Loop
 echo "\n</table>";
 
 if ($i == 0) {
 	echo "\n<p class='err'>Keine Buchung gefunden.</p>\n";
-	linkgml($gkz, $gmlid, "Buchungsblatt");
-}
-	// b e r e c h t i g t e  Grundbuecher (Buchungsblatt) 
-	// mit Recht "an"/"zu" dem aktuellen fiktiven GB
-
-	// bf              vf          sf       vs   sb                 vb            bb
-	// Blatt   <istBestandteilVon< Stelle  <an<  Stelle      >istBestandteilVon>  Blatt
-	// Fiktiv                      Fiktiv  <zu<  Berechtigt                       Berechtigt
-	$sql ="SELECT bb.gml_id, bb.land, bb.bezirk, bb.buchungsblattnummermitbuchstabenerweiterung AS blatt, bb.blattart, ";
-	$sql.="vs.beziehungsart, ";
-	$sql.="sb.gml_id AS gml_s, sb.laufendenummer AS lfdnr, sb.buchungsart, ba.bezeichner AS bart, ";  // berechtigte Buchungsstelle
-	$sql.=" bz.bezeichnung AS beznam, ag.bezeichnung, ag.stelle, ag.stellenart "; // Bezirk, Amtsgericht
-	$sql.="FROM alkis_beziehungen vf ";	// Verbindung fiktiv
-	$sql.="JOIN ax_buchungsstelle sf ON sf.gml_id = vf.beziehung_von ";	// Stelle fiktiv
-	$sql.="JOIN alkis_beziehungen vs ON sf.gml_id = vs.beziehung_zu ";	// Verbindung Stellen
-	$sql.="JOIN ax_buchungsstelle sb ON sb.gml_id = vs.beziehung_von ";	// Stelle berechtigt
-	$sql.="JOIN alkis_beziehungen vb ON sb.gml_id = vb.beziehung_von ";	// Verbindung berechtigt
-	$sql.="JOIN ax_buchungsblatt  bb ON bb.gml_id = vb.beziehung_zu ";	// Blatt berechtigt
-	$sql.="LEFT JOIN ax_buchungsblattbezirk bz ON bb.land = bz.land AND bb.bezirk = bz.bezirk ";
-//	$sql.="LEFT JOIN ax_dienststelle ag ON bz.\"gehoertzu|ax_dienststelle_schluessel|land\" = ag.land AND bz.stelle=ag.stelle ";
-	$sql.="LEFT JOIN ax_dienststelle ag ON bz.land = ag.land AND bz.stelle=ag.stelle ";	
-	$sql.="LEFT JOIN ax_buchungsstelle_buchungsart ba ON sb.buchungsart = ba.wert ";
-	$sql.="WHERE vf.beziehung_zu= $1 ";
-	$sql.="AND  vf.beziehungsart='istBestandteilVon' ";
-	$sql.="AND (vs.beziehungsart='an' OR vs.beziehungsart='zu') ";
-	$sql.="AND  vb.beziehungsart= 'istBestandteilVon' ";
-	$sql.="ORDER BY bb.land, bb.bezirk, bb.buchungsblattnummermitbuchstabenerweiterung;";
-
-	$v = array($gmlid);
-	$resb = pg_prepare("", $sql);
-	$resb = pg_execute("", $v);
-	if (!$resb) {
-		echo "<p class='err'>Fehler bei 'andere Berechtigte Bl&auml;tter:'<br>".$sql."</p>\n";
-		if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
-	}
-	$b=0; // count: Blaetter
-	while($rowb = pg_fetch_array($resb)) {
-		if ($b == 0) { // Ueberschrift und Tabelle nur ausgeben, wenn etwas gefunden wurde
-			echo "\n<h3><img src='ico/Grundbuch_zu.ico' width='16' height='16' alt=''> Berechtigte Grundb&uuml;cher</h3>\n";
-			echo "\n<table class='outer'>";
-			echo "\n<tr>"; // Tabelle Kopf
-				echo "\n\t<td class='head'>Land</td>";
-				echo "\n\t<td class='head'>Dienststelle</td>";
-				echo "\n\t<td class='head'>Bezirk</td>";
-				echo "\n\t<td class='head'>Blatt</td>";
-				echo "\n\t<td class='head'>BVNR</td>"; // Neu
-				echo "\n\t<td class='head'>Buchungsart</td>"; // Neu
-				echo "\n\t<td class='head nwlink noprint'>Weitere Auskunft</td>";
-			echo "\n</tr>";
-		}
-		$gml_b=$rowb["gml_id"];		// id des berechtigten Blattes
-		$gml_s=$rowb["gml_s"];		// id der berechtigten Buchungsstelle
-		$blart=$rowb["blattart"];
-		$buch=$rowb["buchungsart"]; // Buchungsart Stelle berechtigt
-		$bart=$rowb["bart"];			// Buchungsart entschluesselt
-		$lfdnr=$rowb["lfdnr"];
-		$bvnr   = str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
-
-		echo "\n<tr>";
-			echo "\n\t<td>".$rowb["land"]."</td>";
-			echo "\n\t<td>"; // Amtsgericht
-				echo dienststellenart($rowb["stellenart"])." ";
-				if ($showkey) {
-					echo "<span class='key'>".$rowb["stelle"]."</span> ";
-				}
-				echo $rowb["bezeichnung"];
-			echo "</td>";
-			echo "\n\t<td>";
-				if ($showkey) {
-					echo "<span class='key'>".$rowb["bezirk"]."</span> ";
-				}
-				echo $rowb["beznam"];
-			echo "</td>";
-			echo "\n\t<td><span class='wichtig'>".$rowb["blatt"]."</span>";
-				if ($idanzeige) {linkgml($gkz, $gml_b, "Buchungsblatt");}
-			echo "</td>";
-			echo "\n\t<td>".$bvnr;
-				if ($idanzeige) {linkgml($gkz, $gml_s, "Buchungsstelle");}
-			echo "</td>";
-			echo "\n\t<td>";
-				if ($showkey) {
-					echo "<span class='key'>".$buch."</span> ";
-				}
-				echo $bart;
-			echo "</td>";
-			echo "\n\t<td>";
-				echo "\n\t\t<p class='nwlink'>";
-			//	echo $rowb["beziehungsart"]." "; // "an"/"zu" ?
-				echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gml_b."#bvnr".$lfdnr;
-					if ($idanzeige) {echo "&amp;id=j";}
-					if ($showkey)   {echo "&amp;showkey=j";}
-					echo "' title='Nachweis des berechtigten Blattes ".$rowb["beziehungsart"]." ".$blattart."'>";
-					echo blattart($blart);
-					echo " \n\t\t\t<img src='ico/GBBlatt_link.ico' width='16' height='16' alt=''></a>";
-				echo "\n\t\t</p>";
-			echo "</td>";
+	linkgml($gkz, $gmlid, "Buchungsblatt", "");
+} else {
+	if ($i > 5 and $fscnt > 5) { // nur wenn nicht auf einen Blick zu erkennen
+		echo "\n<p class='dbg'>".$i." Buchungen mit ".$fscnt." Flurst&uuml;cken</p>\n";
+	}
+}
+
+// b e r e c h t i g t e  Grundbuecher (Buchungsblatt) 
+// mit Recht "an"/"zu" dem aktuellen fiktiven GB
+
+// bf              vf          sf       vs   sb                 vb            bb
+// Blatt   <istBestandteilVon< Stelle  <an<  Stelle      >istBestandteilVon>  Blatt
+// Fiktiv                      Fiktiv  <zu<  Berechtigt                       Berechtigt
+$sql ="SELECT bb.gml_id, bb.land, bb.bezirk, bb.buchungsblattnummermitbuchstabenerweiterung AS blatt, bb.blattart, 
+sb.gml_id AS gml_s, sb.laufendenummer AS lfdnr, sb.buchungsart, ba.bezeichner AS bart, bz.bezeichnung AS beznam, ag.bezeichnung, ag.stelle, ag.stellenart 
+FROM ax_buchungsstelle sf JOIN ax_buchungsstelle sb ON (substring(sf.gml_id,1,16)=ANY(sb.an) OR substring(sf.gml_id,1,16)=ANY(sb.zu)) 
+JOIN ax_buchungsblatt bb ON substring(bb.gml_id,1,16)=sb.istbestandteilvon 
+LEFT JOIN ax_buchungsblattbezirk bz ON bb.land=bz.land AND bb.bezirk=bz.bezirk 
+LEFT JOIN ax_dienststelle ag ON bz.land=ag.land AND bz.stelle=ag.stelle 
+LEFT JOIN ax_buchungsstelle_buchungsart ba ON sb.buchungsart=ba.wert 
+WHERE sf.istbestandteilvon = $1 AND sf.endet IS NULL AND sb.endet IS NULL AND bb.endet IS NULL ORDER BY bb.land, bb.bezirk, bb.buchungsblattnummermitbuchstabenerweiterung;";
+
+$v = array($gmlid);
+$resb = pg_prepare("", $sql);
+$resb = pg_execute("", $v);
+if (!$resb) {
+	echo "<p class='err'>Fehler bei 'andere Berechtigte Bl&auml;tter.</p>\n";
+	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+}
+$b=0; // count: Blaetter
+while($rowb = pg_fetch_array($resb)) {
+	if ($b == 0) { // Ueberschrift und Tabelle nur ausgeben, wenn etwas gefunden wurde
+		echo "\n<h3><img src='ico/Grundbuch_zu.ico' width='16' height='16' alt=''> Berechtigte Grundb&uuml;cher</h3>\n";
+		echo "\n<table class='outer'>";
+		echo "\n<tr>"; // Tabelle Kopf
+			echo "\n\t<td class='head'>Land</td>";
+			echo "\n\t<td class='head'>Dienststelle</td>";
+			echo "\n\t<td class='head'>Bezirk</td>";
+			echo "\n\t<td class='head'>Blatt</td>";
+			echo "\n\t<td class='head'>BVNR</td>"; // Neu
+			echo "\n\t<td class='head'>Buchungsart</td>"; // Neu
+			echo "\n\t<td class='head nwlink noprint'>Weitere Auskunft</td>";
 		echo "\n</tr>";
-		$b++;
-	}
-	if ($b == 0) {
-		if ($blattkey > 2000 ) { // Warnung nicht bei Grundbuchblatt 1000 und Katasterblatt 2000
-			echo "<p class='err'>Keine berechtigten Bl&auml;tter zu ".$blattart." (".$blattkey.") gefunden.</p>";
-		}
-	} else {
-		echo "\n</table>";
-	}
-
+	}
+	$gml_b=$rowb["gml_id"]; // id des berechtigten Blattes
+	$gml_s=$rowb["gml_s"]; // id der berechtigten Buchungsstelle
+	$blart=$rowb["blattart"];
+	$buch=$rowb["buchungsart"]; // Buchungsart Stelle berechtigt
+	$bart=$rowb["bart"]; // Buchungsart entschluesselt
+	$lfdnr=$rowb["lfdnr"];
+	$bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
+
+	echo "\n<tr>";
+		echo "\n\t<td>".$rowb["land"]."</td>";
+		echo "\n\t<td>"; // Amtsgericht
+			echo dienststellenart($rowb["stellenart"])." ";
+			if ($showkey) {
+				echo "<span class='key'>".$rowb["stelle"]."</span> ";
+			}
+			echo $rowb["bezeichnung"];
+		echo "</td>";
+		echo "\n\t<td>";
+			if ($showkey) {
+				echo "<span class='key'>".$rowb["bezirk"]."</span> ";
+			}
+			echo $rowb["beznam"];
+		echo "</td>";
+		echo "\n\t<td><span class='wichtig'>".$rowb["blatt"]."</span>";
+			if ($idanzeige) {linkgml($gkz, $gml_b, "Buchungsblatt", "");}
+		echo "</td>";
+		echo "\n\t<td>".$bvnr;
+			if ($idanzeige) {linkgml($gkz, $gml_s, "Buchungsstelle", "ax_buchungssstelle");}
+		echo "</td>";
+		echo "\n\t<td>";
+			if ($showkey) {
+				echo "<span class='key'>".$buch."</span> ";
+			}
+			echo $bart;
+		echo "</td>";
+		echo "\n\t<td>";
+			echo "\n\t\t<p class='nwlink'>";
+			echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gml_b."#bvnr".$lfdnr;
+				if ($idanzeige) {echo "&amp;id=j";}
+				if ($showkey)   {echo "&amp;showkey=j";}
+				echo "' title='Nachweis des berechtigten Blattes an ".$blattart."'>"; // oder "zu" statt "an"
+				echo blattart($blart);
+				echo " \n\t\t\t<img src='ico/GBBlatt_link.ico' width='16' height='16' alt=''></a>";
+			echo "\n\t\t</p>";
+		echo "</td>";
+	echo "\n</tr>";
+	$b++;
+}
+if ($b == 0) {
+	if ($blattkey > 2000 ) { // Warnung nicht bei Grundbuchblatt 1000 und Katasterblatt 2000
+		echo "<p class='err'>Keine berechtigten Bl&auml;tter zu ".$blattart." (".$blattkey.") gefunden.</p>";
+	}
+} else {
+	echo "\n</table>";
+}
 ?>
 
Index: trunk/info/info/alkis/alkisausk.php
===================================================================
--- trunk/info/info/alkis/alkisausk.php	(revision 319)
+++ trunk/info/info/alkis/alkisausk.php	(revision 330)
@@ -15,4 +15,8 @@
 	2013-04-08 deprecated "import_request_variables" ersetzt
 	2014-01-28 Link zu alkisstrasse.php
+	2014-09-03 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+
++++ NOCH UMSTELLEN:  alkis_beziehungen
+
 */
 session_start();
@@ -97,5 +101,5 @@
 	echo "\n\t</table>";
 echo "\n</td>\n<td>";
-if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck"); }
+if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck", "ax_flurstueck"); }
 echo "\n\t<p class='nwlink'>weitere Auskunft:<br>";
 
@@ -137,5 +141,5 @@
 $sql ="SELECT DISTINCT l.gml_id, s.gml_id AS kgml, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung ";
 $sql.="FROM alkis_beziehungen v ";
-$sql.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id "; // Strassennamen JOIN
+$sql.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=substring(l.gml_id,1,16) "; // Strassennamen JOIN
 $sql.="LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
 $sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart='weistAuf' ";// id FS";
@@ -234,5 +238,5 @@
 		}
 		echo "\n</td>\n<td>";
-		if ($idanzeige) {linkgml($gkz, $rowg[0], "Buchungsblatt");}
+		if ($idanzeige) {linkgml($gkz, $rowg[0], "Buchungsblatt", "");}
 		echo "\n\t<p class='nwlink'>weitere Auskunft:<br>";
 			echo "\n\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$rowg[0];
@@ -261,5 +265,5 @@
 			echo "\n<p class='err'>Keine Eigent&uuml;mer gefunden.</p>";
 			echo "\n<p class='err'>Bezirk ".$rowg["bezirk"]." Blatt ".$rowg["blatt"]." Blattart ".$blattkey." (".$blattart.")</p>";
-			linkgml($gkz, $gmlid, "Buchungsblatt");
+			linkgml($gkz, $gmlid, "Buchungsblatt", "");
 		}
 	}
Index: trunk/info/info/alkis/alkisnamstruk.php
===================================================================
--- trunk/info/info/alkis/alkisnamstruk.php	(revision 319)
+++ trunk/info/info/alkis/alkisnamstruk.php	(revision 330)
@@ -9,4 +9,6 @@
 	2013-11-22 Namensbestandteil ("von") in Kompakt-Adresse vor den Namen setzen
 	2014-02-06 Redundante Adressen kommen vor. Nur eine davon anzeigen.
+	2014-09-04 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
 
 	ToDo: Sortierung der GrundbÃŒcher zum Namen
@@ -60,5 +62,5 @@
 
 if (!$res) {echo "\n<p class='err'>Fehler bei Zugriff auf Namensnummer</p>\n";}
-if ($idanzeige) { linkgml($gkz, $gmlid, "Person"); }
+if ($idanzeige) { linkgml($gkz, $gmlid, "Person", "ax_person"); }
 if ($row = pg_fetch_array($res)) {
 	$vor=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8");
@@ -84,9 +86,8 @@
 	// A d r e s s e
 	echo "\n<h3><img src='ico/Strasse_mit_Haus.ico' width='16' height='16' alt=''> Adresse</h3>\n";
-	$sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland ";
-	$sqla.="FROM ax_anschrift a JOIN alkis_beziehungen b ON a.gml_id=b.beziehung_zu ";
-	$sqla.="WHERE b.beziehung_von= $1 AND b.beziehungsart='hat' ";
 	// Es kÃ¶nnen redundante Adressen vorhanden sein, z.B. aus Migration, temporÃ€r aus LBESAS. Die letzte davon anzeigen.
-	$sqla.="ORDER BY a.gml_id DESC ;";
+
+	$sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland 
+	FROM ax_anschrift a JOIN ax_person p ON substring(a.gml_id,1,16)=ANY(p.hat) WHERE p.gml_id= $1 ORDER BY a.gml_id DESC ;";
 
 	$v = array($gmlid);
@@ -111,5 +112,5 @@
 			$hsnr=$rowa["hausnummer"];
 			$land=htmlentities($rowa["bestimmungsland"], ENT_QUOTES, "UTF-8");
-			if ($idanzeige) { linkgml($gkz, $gmla, "Adresse"); }
+			if ($idanzeige) { linkgml($gkz, $gmla, "Adresse", "ax_adresse"); }
 
 			echo "<table>\n";
@@ -150,12 +151,8 @@
 	//                               >bestehtAusRechtsverhaeltnissenZu> namensnummer   (Nebenzweig/SonderfÃ€lle?)
 
-	$sqlg ="SELECT n.gml_id AS gml_n, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, g.gml_id AS gml_g, ";
-	$sqlg.="g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung as nr, g.blattart, b.bezeichnung AS beznam ";
-	$sqlg.="FROM alkis_beziehungen bpn JOIN ax_namensnummer n ON bpn.beziehung_von=n.gml_id ";
-	$sqlg.="JOIN alkis_beziehungen bng ON n.gml_id=bng.beziehung_von ";
-	$sqlg.="JOIN ax_buchungsblatt g ON bng.beziehung_zu=g.gml_id ";
-	$sqlg.="LEFT JOIN ax_buchungsblattbezirk b ON g.land = b.land AND g.bezirk = b.bezirk ";
-	$sqlg.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
-	$sqlg.="ORDER BY g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung;";
+	$sqlg ="SELECT n.gml_id AS gml_n, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, g.gml_id AS gml_g, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung as nr, g.blattart, b.bezeichnung AS beznam 
+	FROM ax_person p JOIN ax_namensnummer n ON substring(p.gml_id,1,16)=n.benennt JOIN ax_buchungsblatt g ON substring(g.gml_id,1,16)=n.istbestandteilvon 
+	LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk 
+	WHERE p.gml_id= $1 ORDER BY g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung;";
 	// buchungsblatt... mal mit und mal ohne fuehrende Nullen, bringt die Sortierung durcheinander
 
@@ -208,5 +205,5 @@
 				echo "<span class='wichtig'>".$rowg["nr"]."</span>";
 				if ($idanzeige) {
-					linkgml($gkz, $gmlg, "Grundbuchblatt");
+					linkgml($gkz, $gmlg, "Grundbuchblatt", "");
 				}
 			echo "</td>";
@@ -219,5 +216,5 @@
 				}
 				if ($idanzeige) {
-					linkgml($gkz, $gmln, "Namensnummer"); 
+					linkgml($gkz, $gmln, "Namensnummer", "ax_namensnummer"); 
 				}
 			echo "</td>";
Index: trunk/info/info/alkis/alkisgebaeudenw.php
===================================================================
--- trunk/info/info/alkis/alkisgebaeudenw.php	(revision 319)
+++ trunk/info/info/alkis/alkisgebaeudenw.php	(revision 330)
@@ -8,4 +8,6 @@
 	2013-04-08 deprecated "import_request_variables" ersetzt
     2014-01-30 pg_free_result
+	2014-09-04 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
 */
 session_start();
@@ -39,7 +41,7 @@
 
 // Flurstueck
-$sqlf ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, g.gemarkungsnummer, g.bezeichnung ";
-$sqlf.="FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
-$sqlf.="WHERE f.gml_id= $1;";
+$sqlf ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, g.gemarkungsnummer, g.bezeichnung 
+FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
+WHERE f.gml_id= $1;";
 $v=array($gmlid);
 $resf=pg_prepare("", $sqlf);
@@ -93,5 +95,5 @@
 	echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.ico' width='16' height='16' alt=''></a>";
 echo "\n\t</p>";
-if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck"); }
+if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck", "ax_flurstueck"); }
 echo "\n\t</td>\n</tr>\n</table>";
 // Ende Seitenkopf
@@ -107,5 +109,5 @@
 $sqlg.="h.bauweise_beschreibung, u.bezeichner, g.zustand, z.bezeichner AS bzustand, ";
 
-// Gebaeudeflaeche komplett auch ausserhalb des FS
+// GEB-Flaeche komplett auch die Fl. ausserhalb des FS
 $sqlg.="round(area(g.wkb_geometry)::numeric,2) AS gebflae, ";
 
@@ -120,14 +122,14 @@
 
 // Entschluesseln
-$sqlg.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise = h.bauweise_id ";
-$sqlg.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion = u.wert ";
-$sqlg.="LEFT JOIN ax_gebaeude_zustand z ON g.zustand = z.wert ";
+$sqlg.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise=h.bauweise_id ";
+$sqlg.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion=u.wert ";
+$sqlg.="LEFT JOIN ax_gebaeude_zustand z ON g.zustand=z.wert ";
 $sqlg.="WHERE f.gml_id= $1 "; // ID des akt. FS
 
-// "within" liefert nur Gebaeude, die komplett im Flurstueck liegen
-// "intersects" liefert ueberlappende Flaechen
+// "within" -> nur Geb., die komplett im FS liegen
+// "intersects" -> ueberlappende Fl.
 $sqlg.="AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ";
 
-// RLP: keine Relationen zu Nebengebaeuden:
+// RLP: keine Relationen zu NebengebÃ€uden:
 // auf Qualifizierung verzichten, sonst werden NebengebÃ€ude nicht angezeigt
 	//$sqlg.="AND (v.beziehungsart='zeigtAuf' OR v.beziehungsart='hat') ";
@@ -195,22 +197,20 @@
 
 			echo "\n\t<td class='nwlink noprint'>";
-
 			// 0 bis N Lagebezeichnungen mit Haus- oder Pseudo-Nummer, alle in ein TD zu EINEM GebÃ€ude
-			// HAUPTgebÃ€ude
-			$sqll ="SELECT 'm' AS ltyp, v.beziehung_zu, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer ";
-			$sqll.="FROM alkis_beziehungen v "; 
-			$sqll.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
+
+			// HAUPTgebÃ€ude  Geb >zeigtAuf> lage (mehrere)
+			$sqll ="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer ";
+			$sqll.="FROM ax_gebaeude g JOIN ax_lagebezeichnungmithausnummer l ON substring(l.gml_id,1,16)=ANY(g.zeigtauf) ";
 			$sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
-			$sqll.="WHERE v.beziehungsart = 'zeigtAuf' AND v.beziehung_von = $1 ";
-			$sqll.="UNION ";
-			// oder NEBENgebÃ€ude
-			$sqll.="SELECT 'p' AS ltyp, v.beziehung_zu, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer ";
-			$sqll.="FROM alkis_beziehungen v "; 
-			$sqll.="JOIN ax_lagebezeichnungmitpseudonummer l ON v.beziehung_zu=l.gml_id ";
+			$sqll.="WHERE g.gml_id= $1 ";
+
+			// oder NEBENgebÃ€ude  Geb >hat> Pseudo
+			$sqll.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer ";
+			$sqll.="FROM ax_gebaeude g JOIN ax_lagebezeichnungmitpseudonummer l ON substring(l.gml_id,1,16)=g.hat ";
 			$sqll.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
-			$sqll.="WHERE v.beziehungsart = 'hat' AND v.beziehung_von = $1 "; // ID des Hauses"
+			$sqll.="WHERE g.gml_id= $1 "; // ID des Hauses"
 		
-			$sqll.="ORDER BY bezeichnung, hausnummer ";
-		
+			$sqll.="ORDER BY bezeichnung, hausnummer;";
+
 			$v = array($ggml);
 			$resl = pg_prepare("", $sqll);
@@ -223,13 +223,13 @@
 				$ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
 				$skey=$rowl["lage"]; // Str.-Schluessel
-				$snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); // -Name
+				$snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); //-Name
 				$hsnr=$rowl["hausnummer"];
 				$hlfd=$rowl["laufendenummer"];
-				$gmllag=$rowl["beziehung_zu"];
+				$gmllag=$rowl["lgml"];
 				if ($ltyp == "p") {
 					$lagetitl="NebengebÃ€ude - Pseudonummer";
 					$lagetxt="Nebengeb&auml;ude Nr. ".$hlfd;
 				} else {
-					$lagetitl="HauptgabÃ€ude - Hausnummer";
+					$lagetitl="HauptgebÃ€ude - Hausnummer";
 					$lagetxt=$snam."&nbsp;".$hsnr;
 				}
@@ -240,7 +240,7 @@
 					if ($showkey)   {echo "&amp;showkey=j";}
 				echo "'>".$lagetxt."</a>";
-				if ($idanzeige) {linkgml($gkz, $gmllag, "Lage"); }
+				if ($idanzeige) {linkgml($gkz, $gmllag, "Lage", ""); }
 				echo "<br>";
-			} // Ende Loop Lagezeilen m.H.
+			} // Ende Loop Lage m.H.
             pg_free_result($resl);
 			echo "\n\t</td>";
@@ -255,5 +255,5 @@
 		echo "\n</tr>";
 	}
-// Footer
+	// Footer
 	if ($gebnr == 0) {
 		echo "\n</table>";
Index: trunk/info/info/alkis/alkislage.php
===================================================================
--- trunk/info/info/alkis/alkislage.php	(revision 319)
+++ trunk/info/info/alkis/alkislage.php	(revision 330)
@@ -6,7 +6,9 @@
 
 	Version:
-	2013-03-06  Korrektur URL des Link im Abs. Lage bei eingeschalteten Test-Optionen
-	2013-04-08  deprecated "import_request_variables" ersetzt
-	2014-01-23	gml des Katalogs, Link auf Modul "strasse"
+	2013-03-06 Korrektur URL des Link im Abs. Lage bei eingeschalteten Test-Optionen
+	2013-04-08 deprecated "import_request_variables" ersetzt
+	2014-01-23 gml des Katalogs, Link auf Modul "strasse"
+	2014-09-03 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
 
 	ToDo:
@@ -18,4 +20,5 @@
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
+
 switch ($ltyp) {
 	case "m": // "Mit HsNr"     = Hauptgebaeude
@@ -29,4 +32,5 @@
 		$tnam = "ax_lagebezeichnungmithausnummer"; break;
 }
+
 if ($id == "j") {$idanzeige=true;} else {$idanzeige=false;}
 $keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
@@ -66,12 +70,13 @@
 	break;
 }
-$sql.="FROM ".$tnam." l "; // Left: Bei sub-Typ "Gewanne" von Typ "o" sind keine SchlÃŒsselfelder gefÃŒllt!
-$sql.="LEFT JOIN ax_gemeinde g ON l.land=g.land AND l.regierungsbezirk=g.regierungsbezirk AND l.kreis=g.kreis AND l.gemeinde=g.gemeinde ";
-$sql.="LEFT JOIN ax_kreisregion k ON l.land=k.land AND l.regierungsbezirk=k.regierungsbezirk AND l.kreis=k.kreis ";
-$sql.="LEFT JOIN ax_regierungsbezirk r ON l.land=r.land AND l.regierungsbezirk=r.regierungsbezirk ";
-$sql.="LEFT JOIN ax_bundesland b ON l.land=b.land ";
-$sql.="LEFT JOIN ax_lagebezeichnungkatalogeintrag s ";
-$sql.="ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage ";
-$sql.="WHERE l.gml_id= $1;";
+// "Left" weil: Bei sub-Typ "Gewanne" von Typ "o" sind keine SchlÃŒsselfelder gefÃŒllt!
+$sql.="FROM ".$tnam." l 
+LEFT JOIN ax_gemeinde g ON l.land=g.land AND l.regierungsbezirk=g.regierungsbezirk AND l.kreis=g.kreis AND l.gemeinde=g.gemeinde 
+LEFT JOIN ax_kreisregion k ON l.land=k.land AND l.regierungsbezirk=k.regierungsbezirk AND l.kreis=k.kreis 
+LEFT JOIN ax_regierungsbezirk r ON l.land=r.land AND l.regierungsbezirk=r.regierungsbezirk 
+LEFT JOIN ax_bundesland b ON l.land=b.land 
+LEFT JOIN ax_lagebezeichnungkatalogeintrag s 
+ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage 
+WHERE l.gml_id= $1;";
 
 $v = array($gmlid);
@@ -214,5 +219,5 @@
 
 	// Kopf Rechts: weitere Daten?
-	if ($idanzeige) {linkgml($gkz, $gmlid, "Lage"); }
+	if ($idanzeige) {linkgml($gkz, $gmlid, "Lage", ""); }
 
 	if ($osub != "g") { // Link zu Strasse
@@ -235,17 +240,15 @@
 	echo "\n<p>mit dieser Lagebezeichnung.</p>";
 	switch ($ltyp) {
-		case "m": $bezart="weistAuf"; break;
-		case "o": $bezart="zeigtAuf"; break;
-	}
-	$sql="SELECT g.gemarkungsnummer, g.bezeichnung, ";
-	$sql.="f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche ";
+		case "m": $bezart="weistauf"; break;
+		case "o": $bezart="zeigtauf"; break;
+	}
+
+	$sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche ";
 	$sql.="FROM ax_flurstueck f ";
-	$sql.="JOIN alkis_beziehungen v ON f.gml_id=v.beziehung_von "; 
 	$sql.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
-	$sql.="WHERE v.beziehung_zu= $1 "; // id Lage
-	$sql.="AND v.beziehungsart= $2 ";
+	$sql.="WHERE $1 = ANY(f.".$bezart.")";
 	$sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
 
-	$v = array($gmlid,$bezart);
+	$v = array($gmlid);
 	$resf = pg_prepare("", $sql);
 	$resf = pg_execute("", $v);
@@ -275,5 +278,5 @@
 			echo "\n\t<td>".$flur."</td>";
 			echo "\n\t<td><span class='wichtig'>".$fskenn."</span>";
-				if ($idanzeige) {linkgml($gkz, $rowf["gml_id"], "Flurst&uuml;ck");}
+				if ($idanzeige) {linkgml($gkz, $rowf["gml_id"], "Flurst&uuml;ck", "ax_flurstueck");}
 			echo "</td>";
 			echo "\n\t<td class='fla'>".$flae."</td>";
@@ -361,20 +364,18 @@
 	echo "\n<p>mit dieser Lagebezeichnung.</p>";
 	switch ($ltyp) {
-		case "p": $bezart="hat"; break;
-		case "m": $bezart="zeigtAuf"; break;
-	}
-	$sql ="SELECT g.gml_id, g.gebaeudefunktion, g.name, g.bauweise, g.grundflaeche, g.zustand, ";
-	$sql.="round(area(g.wkb_geometry)::numeric,2) AS flaeche, h.bauweise_beschreibung, u.bezeichner ";
-	$sql.="FROM ax_gebaeude g ";
-	$sql.="JOIN alkis_beziehungen v ON g.gml_id=v.beziehung_von "; 
-	$sql.="LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise = h.bauweise_id ";
-	$sql.="LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion = u.wert ";
-// +++ JOIN Zustand
-	$sql.="WHERE v.beziehung_zu= $1 AND v.beziehungsart= $2 ;";
-	$v = array($gmlid,$bezart);
+		case "p": $bezart="g.hat"; break;
+		case "m": $bezart="ANY(g.zeigtauf)"; break; // array
+	}
+	$sql ="SELECT g.gml_id, g.gebaeudefunktion, g.name, g.bauweise, g.grundflaeche, g.zustand, round(area(g.wkb_geometry)::numeric,2) AS flaeche, h.bauweise_beschreibung, u.bezeichner 
+	FROM ax_gebaeude g LEFT JOIN ax_gebaeude_bauweise h ON g.bauweise=h.bauweise_id 
+	LEFT JOIN ax_gebaeude_funktion u ON g.gebaeudefunktion=u.wert ";
+	// +++ JOIN Zustand
+	$sql.="WHERE $1 = ".$bezart.";";
+
+	$v = array($gmlid);
 	$res = pg_prepare("", $sql);
 	$res = pg_execute("", $v);
 	if (!$res) {
-		echo "<p class='err'>Fehler bei Gebaeude.</p>\n";
+		echo "<p class='err'>Fehler bei Geb&auml;ude.</p>\n";
 		if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
 	}
@@ -396,5 +397,5 @@
 
 			echo "<td>";
-				if ($idanzeige) {linkgml($gkz, $ggml, "Geb&auml;ude");}
+				if ($idanzeige) {linkgml($gkz, $ggml, "Geb&auml;ude", "ax_gebaeude");}
 				// +++ Hausnummer / Adresse ???
 			echo $row["name"]."</td>";
Index: trunk/info/info/alkis/alkisfsnw.php
===================================================================
--- trunk/info/info/alkis/alkisfsnw.php	(revision 319)
+++ trunk/info/info/alkis/alkisfsnw.php	(revision 330)
@@ -20,4 +20,6 @@
 	2014-01-30 Korrektur Nutzungsart (z.B. Friedhof mit class=funktion=0 hatte Anzeige "unbekannt")
 	2014-02-06 Korrektur
+	2014-09-09 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
 
 	ToDo:
@@ -107,13 +109,12 @@
 
 // F L U R S T U E C K
-$sql ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae, f.zeitpunktderentstehung, ";
-$sql.="g.gemarkungsnummer, g.bezeichnung ";
-$sql.="FROM ax_flurstueck f ";
-$sql.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
-$sql.="WHERE f.gml_id= $1";
+$sql ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae, f.zeitpunktderentstehung, g.gemarkungsnummer, g.bezeichnung 
+FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
+WHERE f.gml_id= $1 AND f.endet IS NULL;";
 
 $v = array($gmlid); // mit gml_id suchen
 $res = pg_prepare("", $sql);
 $res = pg_execute("", $v);
+
 if (!$res) {
 	echo "\n<p class='err'>Fehler bei Flurstuecksdaten</p>\n";
@@ -138,6 +139,8 @@
 	$arrn = explode(",", trim($name, "{}") ); // PHP-Array
 } else {
-	echo "<p class='err'>Fehler! Kein Treffer f&uuml;r gml_id=".$gmlid."</p>";
+	echo "<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit gml_id=".$gmlid."</p>";
 	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "</body></html>";
+	return;
 }
 pg_free_result($res);
@@ -177,5 +180,5 @@
 
 	echo "\n\t</table>";
-	if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck"); }
+	if ($idanzeige) {linkgml($gkz, $gmlid, "Flurst&uuml;ck", "ax_flurstueck"); }
 echo "\n\t</td>\n</tr>\n</table>";
 //	echo "\n<tr>\n\t<td>Finanzamt</td>\n\t<td>".$finanzamt." ".$finame  . "</td>\n</tr>";
@@ -247,6 +250,6 @@
 	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
 }
-$row = pg_fetch_array($res);
-$bnam = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
+$row=pg_fetch_array($res);
+$bnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
 echo "<tr><td>&nbsp;</td><td>Regierungsbezirk</td><td>";
 if ($showkey) {
@@ -259,62 +262,60 @@
 // ** L a g e b e z e i c h n u n g **
 
-// Lagebezeichnung Mit Hausnummer
+// Lagebezeichnung MIT Hausnummer
 // ax_flurstueck  >weistAuf>  AX_LagebezeichnungMitHausnummer
-$sql ="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung ";
-$sql.="FROM alkis_beziehungen v ";
-$sql.="JOIN ax_lagebezeichnungmithausnummer  l ON v.beziehung_zu=l.gml_id "; // Strassennamen JOIN
-$sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
-$sql.="AND l.lage = s.lage ";
-$sql.="WHERE v.beziehung_von= $1 "; // id FS";
-$sql.="AND v.beziehungsart='weistAuf' ";
-$sql.="ORDER BY l.gemeinde, l.lage, l.hausnummer;";
-// Theoretisch JOIN notwendig ÃŒber den kompletten SchlÃŒssel bestehend aus land+regierungsbezirk+kreis+gemeinde+lage
-// bei einem SekundÃ€rbestand fÃŒr eine Gemeinde oder einen Kreis reicht dies hier:
+$sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung 
+FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON substring(l.gml_id,1,16) = ANY(f.weistauf)  
+JOIN ax_lagebezeichnungkatalogeintrag s ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage 
+WHERE f.gml_id= $1 ORDER BY l.gemeinde, l.lage, l.hausnummer;";
 
 $v = array($gmlid);
 $res = pg_prepare("", $sql);
 $res = pg_execute("", $v);
+
 if (!$res) {
 	echo "<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer</p>";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
-}
-$j=0;
-while($row = pg_fetch_array($res)) {
-	$sname = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
-	echo "\n<tr>\n\t";
-		if ($j == 0) {
-			echo "<td class='ll'><img src='ico/Lage_mit_Haus.ico' width='16' height='16' alt=''> Adresse:</td>";
-		} else {
-			echo "<td>&nbsp;</td>";
-		}
-		echo "\n\t<td>&nbsp;</td>";
-		echo "\n\t<td class='lr'>";
-		if ($showkey) {
-			echo "<span class='key' title='StraÃenschl&uuml;ssel'>(".$row["lage"].")</span>&nbsp;";
-		}
-		echo $sname."&nbsp;".$row["hausnummer"];
-		if ($idanzeige) {linkgml($gkz, $row["gml_id"], "Lagebezeichnung mit Hausnummer");}
-		echo "</td>";
-		echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
-			echo "\n\t\t\t<a title='Lagebezeichnung mit Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=m&amp;gmlid=".$row["gml_id"];
-			if ($showkey) {echo "&amp;showkey=j";}
-			echo "'>Lage ";
-			echo "<img src='ico/Lage_mit_Haus.ico' width='16' height='16' alt=''></a>";
-		echo "\n\t\t</p>\n\t</td>";
-	echo "\n</tr>";
-	$j++;
-}
-pg_free_result($res);
+	if ($debug > 1) {
+		//echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";
+		echo "<p class='dbg'>Fehler:".pg_last_error()."</p>";
+	}
+	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+} else {
+	$j=0;
+	while($row = pg_fetch_array($res)) {
+		$sname = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
+		echo "\n<tr>\n\t";
+			if ($j == 0) {
+				echo "<td class='ll'><img src='ico/Lage_mit_Haus.ico' width='16' height='16' alt=''> Adresse:</td>";
+			} else {
+				echo "<td>&nbsp;</td>";
+			}
+			echo "\n\t<td>&nbsp;</td>";
+			echo "\n\t<td class='lr'>";
+			if ($showkey) {
+				echo "<span class='key' title='StraÃenschl&uuml;ssel'>(".$row["lage"].")</span>&nbsp;";
+			}
+			echo $sname."&nbsp;".$row["hausnummer"];
+			if ($idanzeige) {linkgml($gkz, $row["gml_id"], "Lagebezeichnung mit Hausnummer", "ax_lagebezeichnungmithausnummer");}
+			echo "</td>";
+			echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
+				echo "\n\t\t\t<a title='Lagebezeichnung mit Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=m&amp;gmlid=".$row["gml_id"];
+				if ($showkey) {echo "&amp;showkey=j";}
+				echo "'>Lage ";
+				echo "<img src='ico/Lage_mit_Haus.ico' width='16' height='16' alt=''></a>";
+			echo "\n\t\t</p>\n\t</td>";
+		echo "\n</tr>";
+		$j++;
+	}
+	pg_free_result($res);
+}
 // Verbesserung: mehrere HsNr zur gleichen StraÃe als Liste?
 
-// L a g e b e z e i c h n u n g   O h n e   H a u s n u m m e r  (Gewanne oder nur Strasse)
+// Lagebezeichnung OHNE Hausnummer  (Gewanne oder nur Strasse)
 // ax_flurstueck  >zeigtAuf>  AX_LagebezeichnungOhneHausnummer
-$sql ="SELECT l.gml_id, l.unverschluesselt, l.gemeinde, l.lage, s.bezeichnung ";
-$sql.="FROM alkis_beziehungen v ";
-$sql.="JOIN ax_lagebezeichnungohnehausnummer l ON l.gml_id=v.beziehung_zu ";
-$sql.="LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
-$sql.="AND l.lage = s.lage ";
-$sql.="WHERE v.beziehung_von= $1 "; // id FS
-$sql.="AND   v.beziehungsart='zeigtAuf';"; //ORDER?
+$sql ="SELECT l.gml_id, l.unverschluesselt, l.gemeinde, l.lage, s.bezeichnung 
+FROM ax_flurstueck f JOIN ax_lagebezeichnungohnehausnummer l ON substring(l.gml_id,1,16)=ANY(f.zeigtauf) 
+LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage 
+WHERE f.gml_id = $1 ;";
+
 $v = array($gmlid);
 $res = pg_prepare("", $sql);
@@ -322,5 +323,6 @@
 if (!$res) {
 	echo "<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer</p>";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
+	//if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";}
+	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 $j=0;
@@ -352,5 +354,5 @@
 			}
 			echo $row["bezeichnung"];
-			if ($idanzeige) {linkgml($gkz, $lgml, "Lagebezeichnung o. HsNr.");}
+			if ($idanzeige) {linkgml($gkz, $lgml, "Lagebezeichnung o. HsNr.", "ax_lagebezeichnungohnehausnummer");}
 			echo "</td>";
 			echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
@@ -458,14 +460,14 @@
 			if ($nam != "") {echo "<br>Name: ".$nam;}
 			if ($bez != "") {echo "<br>Bezeichnung: ".$bez;}
-			if ($idanzeige) {linkgml($gkz, $gml, "Nutzungs-Abschnitt");}
+			if ($idanzeige) {linkgml($gkz, $gml, "Nutzungs-Abschnitt", "");}
 
 		echo "</td>";
 		echo "\n\t<td>";
 			switch ($grupp) { // Icon nach 4 Objektartengruppen
-				case "Siedlung":		$ico = "Abschnitt.ico";	break;
-				case "Verkehr":		$ico = "Strassen_Klassifikation.ico";	break;
-				case "Vegetation":	$ico = "Wald.ico";	break;
-				case "GewÃ€sser":		$ico = "Wasser.ico";	break;
-				default:					$ico = "Abschnitt.ico";	break;
+				case "Siedlung":   $ico = "Abschnitt.ico"; break;
+				case "Verkehr":	   $ico = "Strassen_Klassifikation.ico"; break;
+				case "Vegetation": $ico = "Wald.ico"; break;
+				case "GewÃ€sser":   $ico = "Wasser.ico";	break;
+				default:	$ico = "Abschnitt.ico";	break;
 			}
 			// Icon ist auch im Druck sichtbar, class='noprint' ?		
@@ -499,6 +501,6 @@
 $sql_boden ="SELECT a.wert, a.bezeichner AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez, ";
 $sql_boden.="b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key ";
-$sql_boden.="FROM ax_bauraumoderbodenordnungsrecht b JOIN ax_bauraumoderbodenordnungsrecht_artderfestlegung a ON a.wert = b.artderfestlegung ";
-$sql_boden.="LEFT JOIN ax_dienststelle d ON b.stelle = d.stelle ";
+$sql_boden.="FROM ax_bauraumoderbodenordnungsrecht b JOIN ax_bauraumoderbodenordnungsrecht_artderfestlegung a ON a.wert=b.artderfestlegung ";
+$sql_boden.="LEFT JOIN ax_dienststelle d ON b.stelle=d.stelle ";
 $sql_boden.="WHERE ST_Within((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1),wkb_geometry) ";
 $sql_boden.="OR ST_Overlaps((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1),wkb_geometry)";
@@ -610,15 +612,15 @@
 
 // B U C H U N G S S T E L L E N  zum FS (istGebucht)
-$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer as lfd, s.zaehler, s.nenner, ";
-$sql.="s.nummerimaufteilungsplan as nrpl, s.beschreibungdessondereigentums as sond, b.bezeichner AS bart ";
-$sql.="FROM alkis_beziehungen v JOIN ax_buchungsstelle s ON v.beziehung_zu=s.gml_id ";
-$sql.="LEFT JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart = b.wert ";
-$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart= $2 ORDER BY s.laufendenummer;";
-
-$v = array($gmlid,'istGebucht');
+$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer as lfd, s.zaehler, s.nenner, s.nummerimaufteilungsplan as nrpl, s.beschreibungdessondereigentums as sond, b.bezeichner AS bart 
+FROM ax_flurstueck f JOIN ax_buchungsstelle s ON substring(s.gml_id,1,16)=f.istgebucht 
+LEFT JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart=b.wert 
+WHERE f.gml_id= $1 ORDER BY s.laufendenummer;";
+
+$v = array($gmlid);
 $ress = pg_prepare("", $sql);
 $ress = pg_execute("", $v);
 if (!$ress) {
 	echo "\n<p class='err'>Keine Buchungsstelle.</p>\n";
+	//if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($ress)."</p>";}
 	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
@@ -629,14 +631,10 @@
 
 	// B U C H U N G S B L A T T  zur Buchungsstelle (istBestandteilVon)
-	$sql ="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, ";
-	$sql.="z.bezeichnung ";  // stelle -> amtsgericht
-	$sql.="FROM alkis_beziehungen v "; // Bez. Stelle - Blatt
-	$sql.="JOIN ax_buchungsblatt b ON v.beziehung_zu=b.gml_id ";
+	$sql ="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung ";
+	$sql.="FROM ax_buchungsstelle s JOIN ax_buchungsblatt b ON substring(b.gml_id,1,16)=s.istbestandteilvon ";
 	$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
-	$sql.="WHERE v.beziehung_von= $1 "; // id Buchungsstelle
-	$sql.="AND v.beziehungsart= $2 ";
-	$sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung ;";
-
-	$v = array($gmls,'istBestandteilVon');
+	$sql.="WHERE s.gml_id = $1 ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung ;";
+
+	$v = array($gmls);
 	$resg = pg_prepare("", $sql);
 	$resg = pg_execute("", $v);
@@ -695,7 +693,7 @@
 			echo "\n<td>"; // Outer rechte Spalte: NW-Links
 				if ($idanzeige) {
-					linkgml($gkz, $gmls, "Buchungsstelle");
+					linkgml($gkz, $gmls, "Buchungsstelle", "ax_buchungsstelle");
 					echo "<br>";
-					linkgml($gkz, $gmlg, "Buchungsblatt");
+					linkgml($gkz, $gmlg, "Buchungsblatt", ""); // ax_buchungsblatt keine Relationen
 				}
 				echo "\n\t<p class='nwlink noprint'>weitere Auskunft:<br>";
@@ -730,5 +728,5 @@
 				if ($blattkeyg == 1000) {
 					echo "\n<p class='err'>Keine Namensnummer gefunden.</p>";
-					linkgml($gkz, $gmlg, "Buchungsblatt");
+					linkgml($gkz, $gmlg, "Buchungsblatt", "");
 				} else {
 					echo "\n<p>ohne Eigent&uuml;mer.</p>";
@@ -741,21 +739,17 @@
 		echo "\n<p class='err'>Kein Buchungsblatt gefunden.</p>";
 		echo "\n<p class='err'>Parameter: gml_id= ".$gmls.", Beziehung='istBestandteilVon'</p>";
-		linkgml($gkz, $gmls, "Buchungstelle");
+		linkgml($gkz, $gmls, "Buchungstelle", "ax_buchungsstelle");
 	}
 
 	// Buchungstelle  >an>  Buchungstelle  >istBestandteilVon>  BLATT  ->  Bezirk
-	$sql ="SELECT s.gml_id AS s_gml, s.buchungsart, s.laufendenummer as lfd, ";
-	$sql.="s.zaehler, s.nenner, s.nummerimaufteilungsplan as nrpl, s.beschreibungdessondereigentums as sond, ";
-	$sql.="b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, ";
-	$sql.="z.bezeichnung, a.bezeichner AS bart "; // stelle -> amtsgericht
-	$sql.="FROM alkis_beziehungen an "; // Bez. Stelle - Stelle
-	$sql.="JOIN ax_buchungsstelle s ON an.beziehung_von = s.gml_id ";
-	$sql.="JOIN alkis_beziehungen v ON s.gml_id = v.beziehung_von "; // Bez. Stelle - Blatt
-	$sql.="JOIN ax_buchungsblatt  b ON v.beziehung_zu = b.gml_id ";
-	$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land = b.land AND z.bezirk = b.bezirk ";
-	$sql.="LEFT JOIN ax_buchungsstelle_buchungsart a ON s.buchungsart = a.wert ";
-	$sql.="WHERE an.beziehung_zu = $1 "; // id herrschende Buchungsstelle
-	$sql.="AND an.beziehungsart = 'an' AND v.beziehungsart = 'istBestandteilVon' ";
+	$sql ="SELECT sd.gml_id AS s_gml, sd.buchungsart, sd.laufendenummer as lfd, sd.zaehler, sd.nenner, sd.nummerimaufteilungsplan as nrpl, sd.beschreibungdessondereigentums as sond, ";
+	$sql.="b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung, a.bezeichner AS bart ";
+	$sql.="FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON substring(sd.gml_id,1,16)=ANY(sh.an) "; // Stelle >an> Stelle
+	$sql.="JOIN ax_buchungsblatt b ON substring(b.gml_id,1,16)=sd.istbestandteilvon  ";// Stelle >istbestandteilvon> Blatt
+	$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
+	$sql.="LEFT JOIN ax_buchungsstelle_buchungsart a ON sd.buchungsart=a.wert ";
+	$sql.="WHERE sh.gml_id= $1 "; // id herrschende Buchungsstelle
 	$sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
+
 	$v = array($gmls);
 	$resan = pg_prepare("", $sql);
@@ -806,7 +800,7 @@
 			echo "\n<td>"; // outer rechte Spalte
 				if ($idanzeige) {
-					linkgml($gkz, $rowan["s_gml"], "Buchungsstelle");
+					linkgml($gkz, $rowan["s_gml"], "Buchungsstelle", "ax_buchungsstelle");
 					echo "<br>";
-					linkgml($gkz, $rowan["g_gml"], "Buchungsblatt");
+					linkgml($gkz, $rowan["g_gml"], "Buchungsblatt", "");
 				}
 				echo "\n<br>";
@@ -845,5 +839,5 @@
 if ($bs == 0) {
 	echo "\n<p class='err'>Keine Buchungstelle gefunden.</p>";
-	linkgml($gkz, $gmlid, "Flurst&uuml;ck");
+	linkgml($gkz, $gmlid, "Flurst&uuml;ck", "ax_flurstueck");
 }
 pg_close($con);
Index: trunk/info/info/alkis/alkisauszug.css
===================================================================
--- trunk/info/info/alkis/alkisauszug.css	(revision 319)
+++ trunk/info/info/alkis/alkisauszug.css	(revision 330)
Index: trunk/info/info/alkis/alkisexport.php
===================================================================
--- trunk/info/info/alkis/alkisexport.php	(revision 319)
+++ trunk/info/info/alkis/alkisexport.php	(revision 330)
@@ -1,32 +1,34 @@
 <?php
 /*	Modul alkisexport.php
-	CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch oder Eigentümer.
-	Es wird eine GML-ID übergeben.
+	CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch oder EigentÃŒmer.
+	Es wird eine GML-ID ÃŒbergeben.
 	Es wird ein gespeicherter View verwendet, der nach der gml_id gefiltert wird. 
 	Der View verkettet Flurstueck - Buchungsstelle - Grundbuch - Eigentuemer
-	Die Lagebezeichnung des Flurstücks wird in ein Feld komprimiert.
+	Die Lagebezeichnung des FlurstÃŒcks wird in ein Feld komprimiert.
 	Parameter: gkz=mandant&gmlid=DE...&tabtyp=flurstueck/grundbuch/person
 
 	2014-01-17 krz f.j.
 	2014-01-20 weitere Spalten und verbesserte Formatierung
-	2014-01-21 Der View liefert "Rechtsgemeinschaft" nun als Feld in allen Personen-Sätzen 
+	2014-01-21 Der View liefert "Rechtsgemeinschaft" nun als Feld in allen Personen-SÃ€tzen 
 			eines GB-Blattes statt als eigenen "Satz ohne Person".
 	2014-01-27 Erweiterung auf Filter "strasse" ("gml_id" aus "ax_lagebezeichnungkatalogeintrag")
+	2014-09-04 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
 */
 
 function lage_zum_fs($gmlid) {
-	// Zu einem Flurstück die Lagebezeichnungen (mit Hausnummer) so aufbereiten, 
+	// Zu einem FlurstÃŒck die Lagebezeichnungen (mit Hausnummer) so aufbereiten, 
 	// dass ggf. mehrere Lagebezeichnungen in eine Zelle der Tabelle passen.
-	$sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer FROM alkis_beziehungen v ";
-	$sql.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
-	$sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage ";
-	$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart='weistAuf' ";
-	$sql.="ORDER BY s.bezeichnung, l.hausnummer;";
+	// FS >westAuf> Lage >> Katalog
+	$sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer 
+	FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON substring(l.gml_id,1,16)=ANY(f.weistauf)
+	JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage 
+	WHERE f.gml_id= $1 ORDER BY s.bezeichnung, l.hausnummer;";
+
 	$v=array($gmlid);
 	$res=pg_prepare("", $sql);
 	$res=pg_execute("", $v);
 	if (!$res) {
-		echo "Fehler bei Lagebezeichnung \n";
-		//echo $sql."\n";
+		return "** Fehler bei Lagebezeichnung **"; //.$sql;
 	}
 	$j=0;
@@ -47,4 +49,6 @@
 }
 
+// HIER START //
+
 $cntget = extract($_GET); // Parameter aus URL lesen
 header('Content-type: application/octet-stream');
@@ -61,5 +65,5 @@
 	exit("Fehler beim Verbinden der DB");
 }
-pg_set_client_encoding($con, LATIN1); // Für Excel kein UTF8 ausgeben
+pg_set_client_encoding($con, LATIN1); // FÃŒr Excel kein UTF8 ausgeben
 
 // Der Parameter "Tabellentyp" bestimmt den Namen des Filter-Feldes aus dem View "exp_csv".
@@ -68,5 +72,5 @@
 	case 'grundbuch':  $filter = "gbgml"; break; // ax_buchungsblatt.gml_id
 	case 'person':     $filter = "psgml"; break; // ax_person.gml_id
-	case 'strasse':    $filter = "stgml"; break; // ax_lagebezeichnungkatalogeintrag.gml_id = Straße-GML-ID
+	case 'strasse':    $filter = "stgml"; break; // ax_lagebezeichnungkatalogeintrag.gml_id = StraÃe-GML-ID
 	default: exit("Falscher Parameter '".$tabtyp."'"); break;
 }
@@ -83,5 +87,5 @@
 $res=pg_execute("", $v);
 if (!$res) {exit("Fehler bei Datenbankabfrage");}
-$i=1; // Kopfzeile zählt mit
+$i=1; // Kopfzeile zÃ€hlt mit
 $fsalt='';
 
@@ -110,6 +114,6 @@
 	$bu_lfd=$row["bu_lfd"]; // BVNR
 	$bu_ant=$row["bu_ant"]; // '=zaehler/nenner' oder NULL
-	$bu_key=$row["buchungsart"]; // Schlüssel
-	$bu_art=$row["bu_art"]; // entschlüsselt (Umlaute in ANSI!)
+	$bu_key=$row["buchungsart"]; // SchlÃŒssel
+	$bu_art=$row["bu_art"]; // entschlÃŒsselt (Umlaute in ANSI!)
 	if($bu_ant == '') { // Keine Bruch-Zahl
 		$bu_ant = '1'; // "voller Anteil" (Faktor 1)
@@ -121,5 +125,5 @@
 	$nam_lfd="'".kurz_namnr($row["nam_lfd"])."'"; // In Hochkomma, wird sonst wie Datum dargestellt.
 	$nam_ant=$row["nam_ant"];
-	$nam_adr=$row["nam_adr"]; // Art der Rechtsgemeischaft (Schlüssel)
+	$nam_adr=$row["nam_adr"]; // Art der Rechtsgemeischaft (SchlÃŒssel)
 
 	if ($nam_adr == '') {     // keine Rechtsgemeinschaft
@@ -133,5 +137,5 @@
 			$rechtsg=$row["nam_bes"]; // Beschrieb der Rechtsgemeinschaft
 		} else {
-			$rechtsg=rechtsgemeinschaft($nam_adr); // Entschlüsseln
+			$rechtsg=rechtsgemeinschaft($nam_adr); // EntschlÃŒsseln
 		}
 	}
@@ -154,5 +158,5 @@
 	} else { 
 		$adresse=$row["strasse"]." ".$row["hausnummer"].", ".$row["plz"]." ".$ort;
-		$land=$row["land"]; // nur andere Länder anzeigen
+		$land=$row["land"]; // nur andere LÃ€nder anzeigen
 		if (($land != "DEUTSCHLAND") and ($land != "")) {
 			$adresse.=" (".$land.")";
@@ -161,10 +165,10 @@
 
 	// Adressen (Lage) zum FS
-	if($fsgml != $fsalt) { // nur bei geändertem Kennz.
+	if($fsgml != $fsalt) { // nur bei geÃ€ndertem Kennz.
 		$lage=lage_zum_fs($fsgml); // die Lage neu ermitteln
 		$fsalt=$fsgml;
 	}
 
-	// Den Ausgabe-Satz montieren aus Flurstücks-, Grundbuch- und Namens-Teil
+	// Den Ausgabe-Satz montieren aus FlurstÃŒcks-, Grundbuch- und Namens-Teil
 	//      A             B           C             D               E               F            G
 	$fsteil=$fs_kennz.";".$gmkgnr.";".$gemkname.";".$flurnummer.";".$flstnummer.";".$fs_flae.";".$lage.";";
@@ -181,5 +185,5 @@
 	}
 
-	// Ausgabe in CSV-Datei
+	// Ausgabe in die CSV-Datei -> Download -> Tabellenkalkulation
 	echo "\n".$fsteil.$gbteil.$namteil.$formelteil;
 }
Index: trunk/info/info/alkis/alkisfkt.php
===================================================================
--- trunk/info/info/alkis/alkisfkt.php	(revision 319)
+++ trunk/info/info/alkis/alkisfkt.php	(revision 330)
@@ -11,4 +11,6 @@
 	2014-01-22 Eigentuemerart: Mehr Werte und Zugriff auf DB-SchlÃŒssel-Tabelle
 	2014-02-06 Korrektur EigentÃŒmerart
+	2014-09-09 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
 */
 
@@ -63,9 +65,11 @@
 }
 
-function linkgml($gkz, $gml, $typ)  {
+function linkgml($gkz, $gml, $typ, $tabelle)  {
 	// Einen Link zur Verfolgung der Beziehungen mit dem Modul alkisrelationen.php
-	$kurzid=substr($gml, 12); // ID in Anzeige kuerzen (4 Zeichen), der Anfang ist immer gleich
+	// tabelle = nur angeben fÃŒr Tabellen, die Relationen-Spalten besitzen, sonst leer
+	$kurzid=substr($gml, 12, 4); // ID in Anzeige kuerzen (4 Zeichen), der Anfang ist immer gleich
+	// PostNAS 0.8: Timestamp abschneiden
 	echo "\n\t\t<a target='_blank' title='ID ".$typ."' class='gmlid noprint' ";
-	echo "href='alkisrelationen.php?gkz=".$gkz."&amp;gmlid=".$gml."&amp;otyp=".$typ."'>";
+	echo "href='alkisrelationen.php?gkz=".$gkz."&amp;gmlid=".$gml."&amp;otyp=".$typ."&amp;tabelle=".$tabelle."'>";
 	echo "<img src='ico/Beziehung_link.ico' width='16' height='16' alt=''>".$kurzid."</a>";
 	return 0;
@@ -73,5 +77,5 @@
 
 function kurz_namnr($lang) {
-	// Namensnummer kuerzen. Nicht benoetigte Stufen der Dezimalklassifikation abschneiden
+	// Namensnummer kÃŒrzen. Nicht benÃ¶tigte Stufen der Dezimalklassifikation abschneiden
 	$kurz=str_replace(".00","",$lang); // leere Stufen (nur am Ende)
 	$kurz=str_replace("0000","",$kurz); // ganz leer (am Anfang)
@@ -89,13 +93,10 @@
 */
 	global $gkz, $idanzeige, $showkey;
+
 	// F L U R S T U E C K
-	$sql="SELECT g.gemarkungsnummer, g.bezeichnung, ";
-	$sql.="f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche ";
-	$sql.="FROM ax_flurstueck f ";
-	$sql.="JOIN alkis_beziehungen v ON f.gml_id=v.beziehung_von "; 
+	$sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche ";
+	$sql.="FROM ax_flurstueck f JOIN ax_buchungsstelle s ON f.istgebucht=substring(s.gml_id,1,16) "; 
 	$sql.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
-	$sql.="WHERE v.beziehung_zu= $1 "; // id buchungsstelle
-	$sql.="AND v.beziehungsart='istGebucht' ";
-	$sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
+	$sql.="WHERE s.gml_id= $1 ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
 
 	$v = array($gml_bs);
@@ -116,6 +117,6 @@
 		if ($rowf["nenner"] != "") { // Bruchnummer
 			$fskenn.="/".str_pad($rowf["nenner"], 3, "0", STR_PAD_LEFT);
-		} */
-
+		}
+*/
 		// ohne fuehrende Nullen?
 		$fskenn=$rowf["zaehler"];
@@ -136,5 +137,5 @@
 					echo "<a name='bvnr".$lfdnr."'></a>"; // Sprungmarke
 					echo "<span class='wichtig'>".$bvnr."</span>";  // BVNR
-					if ($idanzeige) {linkgml($gkz, $gml_bs, "Buchungsstelle");}
+					if ($idanzeige) {linkgml($gkz, $gml_bs, "Buchungsstelle", "ax_buchungsstelle");}
 				echo "</td>";
 
@@ -154,5 +155,5 @@
 			echo "\n\t<td>".$flur."</td>";
 			echo "\n\t<td><span class='wichtig'>".$fskenn."</span>";
-				if ($idanzeige) {linkgml($gkz, $rowf["gml_id"], "Flurst&uuml;ck");}
+				if ($idanzeige) {linkgml($gkz, $rowf["gml_id"], "Flurst&uuml;ck", "ax_flurstueck");}
 			echo "</td>";
 			echo "\n\t<td class='fla'>".$flae."</td>";
@@ -178,10 +179,10 @@
 	// Sp.1 = Namennummer, Sp. 2 = Name / Adresse, Sp. 3 = Link
 	// Parameter:
-	//	$gmlid = ID des GB-Blattes
-	//	$mitadresse = Option (true/false) ob auch die Adresszeile ausgegeben werden soll
+	//	$gmlid = ID GB-Blattes
+	//	$mitadresse = Option (true/false) ob die Adresszeile ausgegeben werden soll
 	// Return = Anzahl Namensnummern
 
 	// Schleife 1: N a m e n s n u m m e r
-	// Beziehung: ax_namensnummer  >istBestandteilVon>  ax_buchungsblatt
+	// Beziehung: ax_namensnummer >istBestandteilVon> ax_buchungsblatt
 	global $debug, $gkz, $idanzeige, $showkey;
 
@@ -195,8 +196,6 @@
 	} // Beispiel-Link href='javascript:imFenster(\"alkislage.php?gkz= ... ."\")'>xxx ";
 
-	$sqln="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, ";
-	$sqln.="n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass ";
-	$sqln.="FROM ax_namensnummer n JOIN alkis_beziehungen b ON b.beziehung_von=n.gml_id ";
-	$sqln.="WHERE b.beziehung_zu= $1 AND b.beziehungsart='istBestandteilVon' ORDER BY laufendenummernachdin1421;";
+	$sqln="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass ";
+	$sqln.="FROM ax_namensnummer n WHERE n.istbestandteilvon= $1 ORDER BY n.laufendenummernachdin1421;";
 
 	$v = array($gmlid);
@@ -219,5 +218,5 @@
 				$namnum=kurz_namnr($rown["lfd"]);
 				echo $namnum."&nbsp;";
-				if ($idanzeige) {linkgml($gkz, $rown["gml_id"], "Namensnummer");}
+				if ($idanzeige) {linkgml($gkz, $rown["gml_id"], "Namensnummer", "ax_namensnummer");}
 			echo "</p>\n\t</td>";
 
@@ -247,6 +246,6 @@
 		// Beziehung: ax_person  <benennt<  ax_namensnummer
 		$sqlp ="SELECT p.gml_id, p.nachnameoderfirma, p.vorname, p.geburtsname, p.geburtsdatum, p.namensbestandteil, p.akademischergrad ";
-		$sqlp.="FROM ax_person p JOIN alkis_beziehungen v ON v.beziehung_zu=p.gml_id ";
-		$sqlp.="WHERE v.beziehung_von= $1 AND v.beziehungsart='benennt';";
+		$sqlp.="FROM ax_person p JOIN ax_namensnummer nn ON nn.benennt=substring(p.gml_id,1,16) WHERE nn.gml_id= $1 AND p.endet IS NULL AND nn.endet IS NULL;";
+		// Timestamp an ID abschneiden!
 
 		$v = array($gmlnn);
@@ -260,5 +259,5 @@
 
 		$i=0; // cnt Person
-		while($rowp = pg_fetch_array($resp)) {
+		while($rowp = pg_fetch_array($resp)) {  // ++ Schleife? nn >benennt> Person ist kein Array!
 			$diePerson="";
 			if ($rowp["akademischergrad"] <> "") {$diePerson=$rowp["akademischergrad"]." ";}
@@ -281,6 +280,8 @@
 			// Spalte 3 = Link
 			echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
-				if ($idanzeige) {linkgml($gkz, $rowp["gml_id"], "Person"); echo "&nbsp";}
-				if ($showkey) {echo "<span class='key'>(".$eiartkey.")</span> ";}
+				if ($idanzeige) {linkgml($gkz, $rowp["gml_id"], "Person", "ax_person"); echo "&nbsp";}
+				if ($showkey AND $eiartkey != '') { // oft leer
+						echo "<span class='key'>(".$eiartkey.")</span> ";
+				}
 				echo "\n\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$rowp[0];
 				if ($idanzeige) {echo "&amp;id=j";}
@@ -293,6 +294,5 @@
 				// Schleife 3:  A d r e s s e  (OPTIONAL)
 				$sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland ";
-				$sqla.="FROM ax_anschrift a JOIN alkis_beziehungen b ON a.gml_id=b.beziehung_zu ";
-				$sqla.="WHERE b.beziehung_von= $1 AND b.beziehungsart='hat';"; // ORDER?
+				$sqla.="FROM ax_anschrift a JOIN ax_person p ON substring(a.gml_id,1,16) = ANY(p.hat) WHERE p.gml_id= $1 ;"; // ORDER?
 				$gmlp=$rowp["gml_id"]; // Person
 				$v = array($gmlp);
@@ -332,5 +332,5 @@
 					if ($idanzeige) {
 						echo "<p class='nwlink noprint'>";
-						linkgml($gkz, $gmla, "Adresse");
+						linkgml($gkz, $gmla, "Adresse", "ax_adresse");
 						echo "</p>";
 					} else { 
@@ -342,6 +342,6 @@
 				pg_free_result($resa);
 			} // End if
-
 			// 'keine Adresse' kann vorkommen, z.B. "Deutsche Telekom AG"
+
 			$i++; // cnt Person
 			// als eigene Tab-Zeile?
@@ -353,11 +353,11 @@
 			}
 		} // End Loop Person
-		if ($i == 0) { // kommt vor hinter Zeile Erbengemeinschaft, dann kein Fehler
+		if ($i == 0) { // kommt vor hinter Zeile Erbengemeinschaft, ist dann kein Fehler
 			if ($debug > 0) {
 				echo "\n<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";
 				if ($rechtsg != 9999) {
-					echo "\n<p class='dbg'>Keine Person zur Namensnummer ".$namnum."</p>";
+					echo "\n<p class='dbg'>Fehler: Keine Person zur Namensnummer ".$namnum."</p>";
 				}
-				//if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlp."<br>$1=gml(NamNum)= '".$gmlnn."'</p>";}
+				if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlp."<br>$1 = gml(NamNum) = '".$gmlnn."'</p>";}
 			}
 			echo "</td>\n\t<td>&nbsp;</td>\n<tr>";
@@ -367,5 +367,7 @@
 	echo "\n</table>\n";
 	if ($n == 0) {
+		// kommt vor bei "Fiktives Blatt", kein Fehler 
 		if ($debug > 0) {echo "<p class='dbg'>keine Namensnummern zum Blatt</p>";}
+
 		if ($debug > 2) {echo "<p class='dbg'>Namensnummern: SQL=<br>".$sqln."<br>$1=gml(Blatt)= '".$gmlid."'</p>";}
 	}
Index: trunk/info/info/alkis/alkisstrasse.php
===================================================================
--- trunk/info/info/alkis/alkisstrasse.php	(revision 319)
+++ trunk/info/info/alkis/alkisstrasse.php	(revision 330)
@@ -9,5 +9,7 @@
 	2014-01-23 Neu
 	2014-01-24 CSV-Export
-    2014-01-30 pg_free_result
+	2014-01-30 pg_free_result
+	2014-09-03 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
 */
 session_start();
@@ -31,5 +33,5 @@
 	<title>ALKIS Stra&szlig;e</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
-	<link rel="shortcut icon" type="image/x-icon" href="ico/Lage_an_Strasse.ico">
+	<link rel="shortcut icon" type="image/x-icon" href="ico/Strassen.ico">
 	<script type="text/javascript">
 		function ALKISexport() {
@@ -46,12 +48,12 @@
 if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
 
-$sql ="SELECT s.land, s.regierungsbezirk, s.kreis, s.gemeinde, s.lage, s.bezeichnung AS snam, ";
-$sql.="b.bezeichnung AS bnam, r.bezeichnung AS rnam, k.bezeichnung AS knam, g.bezeichnung AS gnam, o.gml_id AS ogml ";
-$sql.="FROM ax_lagebezeichnungkatalogeintrag s JOIN ax_bundesland b ON s.land=b.land ";
-$sql.="JOIN ax_regierungsbezirk r ON s.land=r.land AND s.regierungsbezirk=r.regierungsbezirk ";
-$sql.="JOIN ax_kreisregion k ON s.land=k.land AND s.regierungsbezirk=k.regierungsbezirk AND s.kreis=k.kreis ";
-$sql.="JOIN ax_gemeinde g ON s.land=g.land AND s.regierungsbezirk=g.regierungsbezirk AND s.kreis=g.kreis AND s.gemeinde=g.gemeinde ";
-$sql.="LEFT JOIN ax_lagebezeichnungohnehausnummer o ON s.land=o.land AND s.regierungsbezirk=o.regierungsbezirk AND s.kreis=o.kreis AND s.gemeinde=o.gemeinde AND s.lage=o.lage ";
-$sql.="WHERE s.gml_id= $1 ;"; 
+$sql ="SELECT s.land, s.regierungsbezirk, s.kreis, s.gemeinde, s.lage, s.bezeichnung AS snam, 
+b.bezeichnung AS bnam, r.bezeichnung AS rnam, k.bezeichnung AS knam, g.bezeichnung AS gnam, o.gml_id AS ogml 
+FROM ax_lagebezeichnungkatalogeintrag s JOIN ax_bundesland b ON s.land=b.land 
+JOIN ax_regierungsbezirk r ON s.land=r.land AND s.regierungsbezirk=r.regierungsbezirk 
+JOIN ax_kreisregion k ON s.land=k.land AND s.regierungsbezirk=k.regierungsbezirk AND s.kreis=k.kreis 
+JOIN ax_gemeinde g ON s.land=g.land AND s.regierungsbezirk=g.regierungsbezirk AND s.kreis=g.kreis AND s.gemeinde=g.gemeinde 
+LEFT JOIN ax_lagebezeichnungohnehausnummer o ON s.land=o.land AND s.regierungsbezirk=o.regierungsbezirk AND s.kreis=o.kreis AND s.gemeinde=o.gemeinde AND s.lage=o.lage 
+WHERE s.gml_id= $1 ;"; 
 
 $v=array($gmlid);
@@ -131,15 +133,19 @@
 echo "\n\n<a name='fs'></a><h3><img src='ico/Flurstueck.ico' width='16' height='16' alt=''> Flurst&uuml;cke</h3>\n";
 echo "\n<p>Zusammenfassung von 'Lage mit Hausnummer' und 'Lage ohne Hausnummer' an dieser StraÃe</p>";
+
 // ax_Flurstueck >weistAuf> ax_LagebezeichnungMitHausnummer  > = Hauptgebaeude 
 // ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer > = Strasse
-$sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, duett.lgml, duett.hausnummer FROM ax_flurstueck f ";
-$sql.="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
-$sql.="JOIN (SELECT v1.beziehung_von AS fsgml, lm.gml_id AS lgml, lm.land, lm.regierungsbezirk, lm.kreis, lm.gemeinde, lm.lage, lm.hausnummer ";
-$sql.="FROM alkis_beziehungen v1 JOIN ax_lagebezeichnungmithausnummer lm ON lm.gml_id=v1.beziehung_zu AND v1.beziehungsart= 'weistAuf' ";
-$sql.="UNION SELECT v2.beziehung_von AS fsgml, '' AS lgml, lo.land, lo.regierungsbezirk, lo.kreis, lo.gemeinde, lo.lage, '' AS hausnummer ";
-$sql.="FROM alkis_beziehungen v2 JOIN ax_lagebezeichnungohnehausnummer lo ON lo.gml_id=v2.beziehung_zu AND v2.beziehungsart= 'zeigtAuf' ";
-$sql.=") AS duett ON f.gml_id=duett.fsgml "; 
-$sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON duett.land=s.land AND duett.regierungsbezirk=s.regierungsbezirk AND duett.kreis=s.kreis AND duett.gemeinde=s.gemeinde AND duett.lage=s.lage "; 
-$sql.="WHERE s.gml_id = $1 ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
+// Suchkriterium: gml_id aus Katalog
+$subquery = "SELECT f1.gml_id AS fsgml, lm.gml_id AS lgml, lm.land, lm.regierungsbezirk, lm.kreis, lm.gemeinde, lm.lage, lm.hausnummer 
+ FROM ax_flurstueck f1 JOIN ax_lagebezeichnungmithausnummer lm ON substring(lm.gml_id,1,16)=ANY(f1.weistAuf) 
+UNION SELECT f2.gml_id AS fsgml, '' AS lgml, lo.land, lo.regierungsbezirk, lo.kreis, lo.gemeinde, lo.lage, '' AS hausnummer 
+ FROM ax_flurstueck f2 JOIN ax_lagebezeichnungohnehausnummer lo ON substring(lo.gml_id,1,16)=ANY(f2.zeigtauf) ";
+
+$sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, duett.lgml, duett.hausnummer 
+ FROM ax_flurstueck f JOIN ( ".$subquery." ) AS duett ON substring(f.gml_id,1,16)=duett.fsgml 
+ JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
+ JOIN ax_lagebezeichnungkatalogeintrag s ON duett.land=s.land AND duett.regierungsbezirk=s.regierungsbezirk AND duett.kreis=s.kreis AND duett.gemeinde=s.gemeinde AND duett.lage=s.lage 
+WHERE s.gml_id = $1 ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
+
 $v=array($gmlid);
 $resf=pg_prepare("", $sql);
@@ -173,5 +179,5 @@
 		echo "\n\t<td>".$flur."</td>";
 		echo "\n\t<td><span class='wichtig'>".$fskenn."</span>";
-		if ($idanzeige) {linkgml($gkz, $rowf["gml_id"], "Flurst&uuml;ck");}
+		if ($idanzeige) {linkgml($gkz, $rowf["gml_id"], "Flurst&uuml;ck", "ax_flurstueck");}
 		echo "</td>";
 		echo "\n\t<td class='fla'>".$flae."</td>";
Index: trunk/info/info/alkis/alkisinlaybaurecht.php
===================================================================
--- trunk/info/info/alkis/alkisinlaybaurecht.php	(revision 319)
+++ trunk/info/info/alkis/alkisinlaybaurecht.php	(revision 330)
@@ -9,5 +9,7 @@
 	2013-04-08  deprecated "import_request_variables" ersetzt
 	2013-06-27	hiervon neue Variante alkisbaurecht (ohne "inlay"), 
-					dafÃŒr hier die SchlÃŒssel ganz raus und FlurstÃŒcks-Verschneidung raus.
+			dafÃŒr hier die SchlÃŒssel ganz raus und FlurstÃŒcks-Verschneidung raus.
+	2014-09-03 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-10 Bei Relationen den Timestamp abschneiden
 */
 session_start();
@@ -42,11 +44,8 @@
 
 // wie View "baurecht"
-$sql ="SELECT r.ogc_fid, r.name, r.stelle, r.bezeichnung AS rechtbez, ";
-$sql.="a.bezeichner  AS adfbez, d.bezeichnung AS stellbez, ";
-$sql.="round(st_area(r.wkb_geometry)::numeric,0) AS flae ";
-$sql.="FROM ax_bauraumoderbodenordnungsrecht r ";
-$sql.="LEFT JOIN ax_bauraumoderbodenordnungsrecht_artderfestlegung a ON r.artderfestlegung = a.wert ";
-$sql.="LEFT JOIN ax_dienststelle d ON r.land = d.land AND r.stelle = d.stelle ";
-$sql.="WHERE r.gml_id= $1 ;";
+$sql ="SELECT r.ogc_fid, r.name, r.stelle, r.bezeichnung AS rechtbez, a.bezeichner  AS adfbez, d.bezeichnung AS stellbez, round(st_area(r.wkb_geometry)::numeric,0) AS flae 
+FROM ax_bauraumoderbodenordnungsrecht r 
+LEFT JOIN ax_bauraumoderbodenordnungsrecht_artderfestlegung a ON r.artderfestlegung=a.wert 
+LEFT JOIN ax_dienststelle d ON r.land=d.land AND r.stelle=d.stelle WHERE r.gml_id= $1 ;";
 
 $v = array($gmlid);
Index: trunk/info/info/alkis/alkisbaurecht.php
===================================================================
--- trunk/info/info/alkis/alkisbaurecht.php	(revision 319)
+++ trunk/info/info/alkis/alkisbaurecht.php	(revision 330)
@@ -4,5 +4,8 @@
 
 	Version:
-	2013-06-27	Neu als Variante von alkis*inlay*baurecht.ph (mit Footer, Balken und Umschaltung Key)
+	2013-06-27Neu als Variante von alkis*inlay*baurecht.ph (mit Footer, Balken und Umschaltung Key)
+	2014-09-10 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+
+	ToDo: id-Anzeige hinzufÃŒgen fÃŒr Baurecht und FlurstÃŒck
 */
 session_start();
@@ -35,11 +38,8 @@
 
 // wie View "baurecht"
-$sql ="SELECT r.ogc_fid, r.artderfestlegung as adfkey, r.name, r.stelle, r.bezeichnung AS rechtbez, ";
-$sql.="a.bezeichner AS adfbez, d.bezeichnung AS stellbez, d.stellenart, ";
-$sql.="round(st_area(r.wkb_geometry)::numeric,0) AS flae ";
-$sql.="FROM ax_bauraumoderbodenordnungsrecht r ";
-$sql.="LEFT JOIN ax_bauraumoderbodenordnungsrecht_artderfestlegung a ON r.artderfestlegung = a.wert ";
-$sql.="LEFT JOIN ax_dienststelle d ON r.land = d.land AND r.stelle = d.stelle ";
-$sql.="WHERE r.gml_id= $1 ;";
+$sql ="SELECT r.ogc_fid, r.artderfestlegung as adfkey, r.name, r.stelle, r.bezeichnung AS rechtbez, a.bezeichner AS adfbez, d.bezeichnung AS stellbez, d.stellenart, round(st_area(r.wkb_geometry)::numeric,0) AS flae 
+FROM ax_bauraumoderbodenordnungsrecht r 
+LEFT JOIN ax_bauraumoderbodenordnungsrecht_artderfestlegung a ON r.artderfestlegung=a.wert 
+LEFT JOIN ax_dienststelle d ON r.land=d.land AND r.stelle=d.stelle WHERE r.gml_id= $1 ;";
 
 $v = array($gmlid);
@@ -85,5 +85,5 @@
 				echo "\n\t<td class='li'>Verfahrensnummer:</td>";
 				echo "\n\t<td>".$verfnr."</td>";
-				// if ($idanzeige) {linkgml($gkz, $gmlid, "Verfahren"); } // KEINE Bez.!
+				// if ($idanzeige) {linkgml($gkz, $gmlid, "Verfahren", ""); } // KEINE Bez.!
 			echo "\n</tr>";
 		}
@@ -123,12 +123,11 @@
 echo "\n<p>Ermittelt durch geometrische Verschneidung. Nach Gr&ouml;&szlig;e absteigend.</p>";
 
-$sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, ";
-$sql.="round(st_area(ST_Intersection(r.wkb_geometry,f.wkb_geometry))::numeric,1) AS schnittflae ";
-$sql.="FROM ax_flurstueck f, ax_bauraumoderbodenordnungsrecht r  ";
-$sql.="WHERE r.gml_id= $1 "; 
-$sql.="AND st_intersects(r.wkb_geometry,f.wkb_geometry) = true ";
-$sql.="AND st_area(st_intersection(r.wkb_geometry,f.wkb_geometry)) > 0.05 ";  // > 0.0 ist gemeint, Ungenauigkeit durch st_simplify
-$sql.="ORDER BY schnittflae DESC ";
-$sql.="LIMIT 40;"; // Limit: Flurbereinig. kann gross werden!
+$sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, round(st_area(ST_Intersection(r.wkb_geometry,f.wkb_geometry))::numeric,1) AS schnittflae 
+FROM ax_flurstueck f, ax_bauraumoderbodenordnungsrecht r
+WHERE r.gml_id= $1 AND st_intersects(r.wkb_geometry,f.wkb_geometry) = true 
+AND st_area(st_intersection(r.wkb_geometry,f.wkb_geometry)) > 0.05 
+ORDER BY schnittflae DESC LIMIT 40;"; 
+// > 0.0 ist gemeint, Ungenauigkeit durch st_simplify
+// Limit: Flurbereinig. kann gross werden!
 // Trotz Limit lange Antwortzeit, wegen OrderBy -> intersection
 $v = array($gmlid);
