Index: trunk/mapbender/http/nav/alkisnav_eig.php
===================================================================
--- trunk/mapbender/http/nav/alkisnav_eig.php	(revision 334)
+++ trunk/mapbender/http/nav/alkisnav_eig.php	(revision 339)
@@ -8,10 +8,11 @@
 				Dazu Var-Namen harmonisieren: $gb wird $blattgml.
 				ZurÃŒck-Link, Titel der Transaktion anzeigen.
-	2013-04-29	Darstellung mit IE
-	2013-05-07  Strukturierung des Programms, redundanten Code in Functions zusammen fassen
-	2013-05-14  Hervorhebung aktuelles Objekt, Parameter "gbkennz" auswerten,
-				Title auch auf Icon, IE zeigt sonst alt= als Title dar.
-	2014-09-09  PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
-	2014-09-15  Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL"
+	2013-04-29 Darstellung mit IE
+	2013-05-07 Strukturierung des Programms, redundanten Code in Functions zusammen fassen
+	2013-05-14 Hervorhebung aktuelles Objekt, Parameter "gbkennz" auswerten,
+               Title auch auf Icon, IE zeigt sonst alt= als Title dar.
+	2014-09-09 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-15 Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL"
+	2014-09-30 RÃŒckbau substring(gml_id)
 */
 $cntget = extract($_GET);
@@ -65,5 +66,5 @@
 	$sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, 
 	a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer 
-	FROM ax_person p LEFT JOIN ax_anschrift a ON substring(a.gml_id,1,16)=ANY(p.hat) 
+	FROM ax_person p LEFT JOIN ax_anschrift a ON a.gml_id=ANY(p.hat) 
 	WHERE p.gml_id= $1 AND p.endet IS NULL AND a.endet IS NULL LIMIT 1;";	
 	// Es wird nur eine Zeile ausgewertet
@@ -194,5 +195,5 @@
 	// Suche nach GrundbÃŒchern der Person
 	$sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam 
-	FROM ax_namensnummer n JOIN ax_buchungsblatt gb ON n.istbestandteilvon=substring(gb.gml_id,1,16) 
+	FROM ax_namensnummer n JOIN ax_buchungsblatt gb ON n.istbestandteilvon=gb.gml_id 
 	JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk 
 	WHERE n.bennennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL;";
@@ -219,5 +220,5 @@
 		echo "\n<p class='ein'>Teil ".$bltseite;
 	}
-	$v=array(substr($person,0,16), $linelimit); // nur 16 Stellen in Relation "benennt"
+	$v=array($person, $linelimit);
 	$res=pg_prepare("", $sql);
 	$res=pg_execute("", $v);
@@ -242,5 +243,5 @@
 /*	if ($cnt == 0) { // Nur Entwicklg.
 		if ($debug > 1) {echo "\n<p class='err'>keine Buchung</p>";}
-		if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."',<br>$1 = '".substr($person,0,16)."'<p>";}
+		if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."',<br>$1 = '".$person."'<p>";}
 	} */
 
@@ -345,15 +346,15 @@
 	// NamenNummer >istbestandteilvon> buchungsblatt <istbestandteilvon< buchungsstelle-1
 	$sql1.="FROM ax_namensnummer nn 
-	JOIN ax_buchungsblatt gb ON substring(gb.gml_id,1,16)=nn.istbestandteilvon 
+	JOIN ax_buchungsblatt gb ON gb.gml_id=nn.istbestandteilvon 
 	JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk
-	JOIN ax_buchungsstelle s1 ON substring(gb.gml_id,1,16)=s1.istbestandteilvon ";
+	JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon ";
 
 	// Baustein A: Auswahl 1 oder 2
 	// buchungsstelle-1 <istGebucht< FS
-	$sqla1 ="JOIN ax_flurstueck f ON substring(s1.gml_id,1,16)=f.istgebucht ";
+	$sqla1 ="JOIN ax_flurstueck f ON s1.gml_id=f.istgebucht ";
 
 	// buchungsStelle1 (herr.) >an> buchungsStelle2 (dien.) <istGebucht< FS
-	$sqla2 ="JOIN ax_buchungsstelle s2 ON substring(s2.gml_id,1,16)=ANY(s1.an) ";
-	$sqla2.="JOIN ax_flurstueck f ON substring(s2.gml_id,1,16)=f.istgebucht ";
+	$sqla2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) ";
+	$sqla2.="JOIN ax_flurstueck f ON s2.gml_id=f.istgebucht ";
 
 	// Baustein 2: SQL-Ende fuer beide Varianten
@@ -409,10 +410,10 @@
 		$sql=$sql1.$sqla1.$sql2.$bltwhere.$sql3; // Direkte Buchungen
 
-		$v=array(substr($person,0,16), $linelimit); // Rel. "benennt" nur 16 Zeichen
+		$v=array($person, $linelimit);
 		$res=pg_prepare("", $sql);
 		$res=pg_execute("", $v);
 		if (!$res) {
 			echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>";
-			if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."', $1 = '".substr($person,0,16)."'<p>";}
+			if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."', $1 = '".$person."'<p>";}
 			return;
 		}
@@ -494,5 +495,5 @@
 		// buchungsStelle2 <an< buchungsStelle1
 		$sql=$sql1.$sqla2.$sql2.$bltwhere.$sqlw2.$sql3; // Rechte an
-		$v=array(substr($person,0,16), $linelimit);
+		$v=array($person, $linelimit);
 		$res=pg_prepare("", $sql);
 		$res=pg_execute("", $v);
Index: trunk/mapbender/http/nav/alkisnav_adr.php
===================================================================
--- trunk/mapbender/http/nav/alkisnav_adr.php	(revision 334)
+++ trunk/mapbender/http/nav/alkisnav_adr.php	(revision 339)
@@ -10,4 +10,5 @@
 	2014-09-03  PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
 	2014-09-15  Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL"
+	2014-09-30 RÃŒckbau substring(gml_id)
 
 	ToDo:
@@ -241,5 +242,5 @@
 			}
 			$sqlko.="FROM ax_lagebezeichnungohnehausnummer o ";
-			$sqlko.="JOIN ax_flurstueck f ON substring(o.gml_id,1,16)=ANY(f.zeigtauf) ";
+			$sqlko.="JOIN ax_flurstueck f ON o.gml_id=ANY(f.zeigtauf) ";
 			$sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 ";	
 			$sqlko.="LIMIT 1;"; // die erstbeste Koordinate
@@ -297,5 +298,5 @@
 			$sql.="avg (st_y(st_transform(p.wkb_geometry,".$epsg."))) AS y ";		
 		}
-		$sql.="FROM ap_pto p JOIN ax_lagebezeichnungmithausnummer h ON substring(h.gml_id,1,16)=ANY(p.dientzurdarstellungvon) 
+		$sql.="FROM ap_pto p JOIN ax_lagebezeichnungmithausnummer h ON h.gml_id=ANY(p.dientzurdarstellungvon) 
 		WHERE p.art='HNR' AND h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5 
 		AND p.endet IS NULL AND h.endet IS NULL
Index: trunk/mapbender/http/nav/alkisnav_grd.php
===================================================================
--- trunk/mapbender/http/nav/alkisnav_grd.php	(revision 334)
+++ trunk/mapbender/http/nav/alkisnav_grd.php	(revision 339)
@@ -6,10 +6,11 @@
 				Dazu Var-Namen harmonisieren: $gblatt wird $blattgml
 				ZurÃŒck-Link, Titel der Transaktion anzeigen.
-	2013-04-29	Test mit IE
-	2013-05-07  Strukturierung des Programms, redundanten Code in Functions zusammen fassen
-	2013-05-14  Hervorhebung aktuelles Objekt. Title "Nachweis" auch auf Icon.
-	2013-12-12	Limit in EinBlatt von 200 weit hoch gesetzt (bis BlÃ€ttern mÃ¶glich wird)
-	2014-09-03  PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
-	2014-09-15  Bei Relationen den Timestamp abschneiden
+	2013-04-29 Test mit IE
+	2013-05-07 Strukturierung des Programms, redundanten Code in Functions zusammen fassen
+	2013-05-14 Hervorhebung aktuelles Objekt. Title "Nachweis" auch auf Icon.
+	2013-12-12 Limit in EinBlatt von 200 weit hoch gesetzt (bis BlÃ€ttern mÃ¶glich wird)
+	2014-09-03 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
+	2014-09-15 Bei Relationen den Timestamp abschneiden
+	2014-09-30 RÃŒckbau substring(gml_id)
 */
 $cntget = extract($_GET);
@@ -307,5 +308,5 @@
 	// Blatt ->  B u c h u n g s s t e l l e
 	$sql ="SELECT s.gml_id FROM ax_buchungsstelle s 
-	JOIN ax_buchungsblatt b ON s.istbestandteilvon=substring(b.gml_id,1,16)
+	JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id
 	WHERE b.bezirk= $1 AND s.endet IS NULL AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung ";
 
@@ -424,8 +425,8 @@
 gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez 
 FROM ax_buchungsstelle sh 
-JOIN ax_buchungsstelle sd ON substring(sd.gml_id,1,16)=ANY(sh.an) 
-JOIN ax_flurstueck f ON f.istgebucht=substring(sd.gml_id,1,16) 
+JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) 
+JOIN ax_flurstueck f ON f.istgebucht=sd.gml_id 
 JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung 
-JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=substring(bd.gml_id,1,16) 
+JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id 
 JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk 
 WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL "
@@ -454,10 +455,10 @@
 		if ($gwblatt != $dienblatt) { // Gruppierung Blatt - dienend
 			$gwblatt = $dienblatt; // Steuerg GW Blatt
-			zeile_blatt($dienbezirk, $diengbbez, $dienbltgml, $dienblatt, true, "");
+			zeile_blatt($dienbezirk, $diengbbez, $dienbltgml, $dienblatt, true, "", false);
 			$gwbvnr="";
 		}
 		if ($gwbvnr != $dienlfd) { // Gruppierung Buchung (BVNR) - dienend
 			$gwbvnr = $dienlfd; // Steuerg GW BVNR
-			zeile_buchung($diengml, $dienlfd, $dienbezirk."-".$dienblatt, true);
+			zeile_buchung($diengml, $dienlfd, $dienbezirk."-".$dienblatt, true, false);
 		} // ++ Buchungsart? Welches Recht?
 		$fs_gml=$row["gml_id"];
Index: trunk/mapbender/http/nav/alkisnav_fkt.php
===================================================================
--- trunk/mapbender/http/nav/alkisnav_fkt.php	(revision 334)
+++ trunk/mapbender/http/nav/alkisnav_fkt.php	(revision 339)
@@ -7,4 +7,5 @@
 	2014-09-03  PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
 	2014-09-15  Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL"
+	2014-09-30 RÃŒckbau substring(gml_id)
 */
 
@@ -249,9 +250,9 @@
 
 	// zwischen, Variante 1.
-    $sqlz1="JOIN ax_flurstueck f ON f.istgebucht=substring(s1.gml_id,1,16) ";
+    $sqlz1="JOIN ax_flurstueck f ON f.istgebucht=s1.gml_id ";
 
 	// zwischen, Variante 2. Nur an oder "an" und "zu"?
-	$sqlz2 ="JOIN ax_buchungsstelle s2 ON substring(s2.gml_id,1,16)=ANY(s1.an) 
-	JOIN ax_flurstueck f ON f.istgebucht=substring(s2.gml_id,1,16) ";
+	$sqlz2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) 
+	JOIN ax_flurstueck f ON f.istgebucht=s2.gml_id ";
 
 	// hinten gleich
@@ -272,10 +273,10 @@
 	// d i r e k t e  B u c h u n g e n
 	// Blatt <istBestandteilVon<  Buchungsstelle <istGebucht< FlurstÃŒck
-	$v=array(substr($blattgml,0,16), $linelimit); // Rel. istBestandteilVon nur 16 Stellen
+	$v=array($blattgml, $linelimit); // Rel. istBestandteilVon
 	$res=pg_prepare("", $sql1.$sqlz1.$sql2.$sqlord);
 	$res=pg_execute("", $v);
 	if (!$res) {
 		echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>";
-		if ($debug >= 3) {echo "\n<p class='err'>SQL='".$sql1.$sqlz1.$sql2.$sqlord."'<br>$1 = '".substr($blattgml,0,16)."'</p>";}
+		if ($debug >= 3) {echo "\n<p class='err'>SQL='".$sql1.$sqlz1.$sql2.$sqlord."'<br>$1 = '".$blattgml."'</p>";}
 		return;
 	}
