Seite 1 von 1

2 Fragen, gebildete Felder weiter verwenden, Fehlermeldung fehlt

Verfasst: Mo 13. Jul 2020, 11:02
von ILEMax
Hallo zusammen.
Ich verwende seid Jahren eine Base DB auf die ich eine View gelegt habe, um einen Brief mit diesen Feldern zu drucken.

In der View verwende ich selbst errechete Felder
Bsp.:
( 2.8 * "Eewachsene" * "Tg1503_3110" ) + ( 1.8 * "Eewachsene" * "TgRest" ) AS "KuTa",

1. Frage: gibt es eine schreibweise, die mir erlaubt in der view nach o.g. definition mit dem feld KuTa weiter zu arbeiten?
also "KuTa" + "Handtuecher" + "Bettwaesche" as "NK"

2. Frage
nach einer kleinen Änderung stimmt nun die View nicht mehr.
Was der Fehler ist, wird mir aber nicht schlüssig angezeigt, da das Fehlerfenster über den Bildschirm hinaus geht und keine Schiebebalken hat.

Findet jemand den Fehler?

SELECT
"AdressID" AS "AdressID",
"Anrede" AS "Anrede",
"Titel" AS "Titel",
"Vorname" AS "Vorname",
"Nachname" AS "Nachname",
"Strasse" AS "Strasse",
"Postleitzahl" AS "Postleitzahl",
"Ort" AS "Ort",
"Telefonnummer" AS "Telefonnummer",
"eMail" AS "eMail",
"Kinder" AS "Kinder",
"vonDT" AS "vonDT",
"bisDT" AS "bisDT",
"PreisPTag" AS "PreisPTag",
"gemietet" AS "gemietet",
"Anmerkung" AS "Anmerkung",
"Eewachsene" AS "Eewachsene",
"Tg1503_3110" AS "Tg1503_3110",
"TgRest" AS "TgRest",
( 2.8 * "Eewachsene" * "Tg1503_3110" ) + ( 1.8 * "Eewachsene" * "TgRest" ) AS "KuTa",
( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * - 1 AS "tage",
"Handtuecher" AS "Handtuecher",
"Bettwaesche" AS "Bettwaesche",
"Internet" AS "Internet",
("Internet" + ( ( DATEDIFF( 'day', "bisDT", "vonDT"
) * - 1
) * "PreisPTag"
+ 200
+ ( "Handtuecher" * 8 )
+ ( "Bettwaesche" * 8 )
+ ( 2.8 * "Eewachsene" * "Tg1503_3110" )
+ ( 1.8 * "Eewachsene" * "TgRest" )
+ ( ( ( (DATEDIFF( 'day', "bisDT", "vonDT"
) * - 1
) * "PreisPTag"
) / 100
) * 2,75
)
)
) AS "ges",
(
"Internet" + ( ( DATEDIFF( 'day', "bisDT", "vonDT" ) * - 1 ) * "PreisPTag" + 200
+ ( "Handtuecher" * 8 )
+ ( "Bettwaesche" * 8 )
+ ( 2.8 * "Eewachsene" * "Tg1503_3110" ) + ( 1.8 * "Eewachsene" * "TgRest" )
+ ( ( ( (DATEDIFF( 'day', "bisDT", "vonDT"
) * - 1
) * "PreisPTag"
) / 100
) * 2,75
)
) / 3 AS "drittel",
(
"Internet" + ( ( DATEDIFF( 'day', "bisDT", "vonDT" ) * - 1 ) * "PreisPTag" + 200
+ ( "Handtuecher" * 8 )
+ ( "Bettwaesche" * 8 )
+ ( 2.8 * "Eewachsene" * "Tg1503_3110" ) + ( 1.8 * "Eewachsene" * "TgRest" )
+ ( ( ( (DATEDIFF( 'day', "bisDT", "vonDT" )
) * - 1
) * "PreisPTag"
) / 100
) * 2,75
) -
((
"Internet" + ( ( DATEDIFF( 'day', "bisDT", "vonDT" ) * - 1 ) * "PreisPTag" + 200
+ ( "Handtuecher" * 8 )
+ ( "Bettwaesche" * 8 )
+ ( 2.8 * "Eewachsene" * "Tg1503_3110" ) + ( 1.8 * "Eewachsene" * "TgRest" )
+ ( ( ( (DATEDIFF( 'day', "bisDT", "vonDT" )
) * - 1
) * "PreisPTag"
) / 100
) * 2,75
) / 3) AS "rest",
DATEDIFF( 'day', "bisDT", "vonDT" ) * - 1 * "PreisPTag" AS "miete",
DATEDIFF( 'day', "bisDT", "vonDT" ) * - 1 * "PreisPTag" + 50 AS "miupu",
"Handtuecher" * 8 AS "gfh",
"Bettwaesche" * 8 AS "gfb",
( DATEDIFF( 'day', "bisDT", "vonDT" ) * - 1 * "PreisPTag" / 100 ) * 2.75 AS "Bettenst"
FROM "Adressen" AS "Adressen"

das Fehlerfenster
view.PNG
view.PNG (57.2 KiB) 2740 mal betrachtet

Re: 2 Fragen, gebildete Felder weiter verwenden, Fehlermeldung fehlt

Verfasst: Mo 13. Jul 2020, 12:31
von RobertG
Hallo ILEMAX,

zur ersten Frage: Ein innerhalb einer Zeile mit einem Alias versehenes Feld ist nicht in der gleichen Zeile für die Datenbank bekannt. Da musst Du dann leider die ganze Rechnung noch einmal einbauen - oder einen View zusammenstellen, in dem z.B. nur die Rechnung zusammen mit dem Primärschlüssel steht.

Ich suche einmal mögliche Kandidaten für einen Fehler raus:

Code: Alles auswählen

( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * - 1 AS "tage", 
Da hätte ich alternativ

Code: Alles auswählen

( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) AS "tage", 
gemacht, da das sonst 2 Rechenzeichen direkt hintereinander sind.
... und damit machst Du munter weiter in der ganzen Rechnung ...
Außerdem sind da Klammerfehler mit drin, die Du am besten raus bekommst, indem Du das in einen Editor einliest, der Klammerung auch erkennen kann. Der Editor von Base ist da leider für längeren Code denkbar ungeeignet.

Code: Alles auswählen

AS "ges",
(
"Internet"
Dieser Teilcode hat eine vermutlich Falsche Kammer. Das, was Du anschließend rechnest schließt mit "AS drittel" ab.

Weiter unten scheint so etwas noch einmal vorzukommen.

Gruß

Robert

Re: 2 Fragen, gebildete Felder weiter verwenden, Fehlermeldung fehlt

Verfasst: Mo 13. Jul 2020, 13:19
von ILEMax
Danke für den Tipp,
habe den Code mal im Notepad++ eingefügt.

Klammern stimmen nun, finde aber den Fehler nicht. Imerhin bekomme nun aber eine 'bessere' Fehlermeldung.
Hast du noch eine Idee?

Danke
view.PNG
view.PNG (108.71 KiB) 2731 mal betrachtet


Hier der aktuelle code:

SELECT
"AdressID" AS "AdressID",
"Anrede" AS "Anrede",
"Titel" AS "Titel",
"Vorname" AS "Vorname",
"Nachname" AS "Nachname",
"Strasse" AS "Strasse",
"Postleitzahl" AS "Postleitzahl",
"Ort" AS "Ort",
"Telefonnummer" AS "Telefonnummer",
"eMail" AS "eMail",
"Kinder" AS "Kinder",
"vonDT" AS "vonDT",
"bisDT" AS "bisDT",
"PreisPTag" AS "PreisPTag",
"gemietet" AS "gemietet",
"Anmerkung" AS "Anmerkung",
"Eewachsene" AS "Eewachsene",
"Tg1503_3110" AS "Tg1503_3110",
"TgRest" AS "TgRest",
( 2.8 * "Eewachsene" * "Tg1503_3110" ) +
( 1.8 * "Eewachsene" * "TgRest" ) AS "KuTa",
( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) AS "tage",
"Handtuecher" AS "Handtuecher",
"Bettwaesche" AS "Bettwaesche",
"Internet" AS "Internet",
"Internet" +
( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag"
+ 200
+ ( "Handtuecher" * 8 )
+ ( "Bettwaesche" * 8 )
+ ( 2.8 * "Eewachsene" * "Tg1503_3110" )
+ ( 1.8 * "Eewachsene" * "TgRest" )
+ ((( (DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" )/ 100 ) * 2,75)
AS "ges",
("Internet" +
( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag"
+ 200
+ ( "Handtuecher" * 8 )
+ ( "Bettwaesche" * 8 )
+ ( 2.8 * "Eewachsene" * "Tg1503_3110" )
+ ( 1.8 * "Eewachsene" * "TgRest" )
+ ((( (DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" ) / 100 ) * 2,75 )
) / 3 AS "drittel",
("Internet" +
( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag"
+ 200
+ ( "Handtuecher" * 8 )
+ ( "Bettwaesche" * 8 )
+ ( 2.8 * "Eewachsene" * "Tg1503_3110" )
+ ( 1.8 * "Eewachsene" * "TgRest" )
+ ((( (DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" ) / 100 ) * 2,75 )
) -
(("Internet" +
( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag"
+ 200
+ ( "Handtuecher" * 8 )
+ ( "Bettwaesche" * 8 )
+ ( 2.8 * "Eewachsene" * "Tg1503_3110" )
+ ( 1.8 * "Eewachsene" * "TgRest" )
+ ((( (DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" ) / 100 ) * 2,75 )
) / 3 ) AS "rest",
DATEDIFF( 'day', "bisDT", "vonDT" ) * (- 1) * "PreisPTag" AS "miete",
DATEDIFF( 'day', "bisDT", "vonDT" ) * (- 1) * "PreisPTag" + 50 AS "miupu",
"Handtuecher" * 8 AS "gfh",
"Bettwaesche" * 8 AS "gfb",
( DATEDIFF( 'day', "bisDT", "vonDT" ) * (- 1) * "PreisPTag" / 100 ) * 2.75 AS "Bettenst"
FROM "Adressen" AS "Adressen"

Re: 2 Fragen, gebildete Felder weiter verwenden, Fehlermeldung fehlt

Verfasst: Mo 13. Jul 2020, 13:44
von ILEMax
Mit der passenden Formatierung (wenigstens einigermassen):

Code: Alles auswählen

SELECT 
"AdressID"      								AS "AdressID", 
"Anrede"        								AS "Anrede", 
"Titel"         								AS "Titel", 
"Vorname"       								AS "Vorname", 
"Nachname"      								AS "Nachname", 
"Strasse"       								AS "Strasse", 
"Postleitzahl"  								AS "Postleitzahl", 
"Ort"           								AS "Ort", 
"Telefonnummer" 								AS "Telefonnummer", 
"eMail"         								AS "eMail", 
"Kinder"        								AS "Kinder", 
"vonDT"         								AS "vonDT", 
"bisDT"         								AS "bisDT", 
"PreisPTag"     								AS "PreisPTag", 
"gemietet"      								AS "gemietet", 
"Anmerkung"     								AS "Anmerkung", 
"Eewachsene"    								AS "Eewachsene", 
"Tg1503_3110"   								AS "Tg1503_3110", 
"TgRest"        								AS "TgRest", 
( 2.8 * "Eewachsene" * "Tg1503_3110" ) + 
( 1.8 * "Eewachsene" * "TgRest" ) 				AS "KuTa", 
( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) AS "tage", 
"Handtuecher"   								AS "Handtuecher", 
"Bettwaesche"   								AS "Bettwaesche", 
"Internet"      								AS "Internet", 
"Internet" + 
	( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" 
    + 200 
    + ( "Handtuecher" * 8 ) 
    + ( "Bettwaesche" * 8 ) 
    + ( 2.8 * "Eewachsene" * "Tg1503_3110" ) 
    + ( 1.8 * "Eewachsene" * "TgRest" ) 
    + ((( (DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" )/ 100 )  * 2,75)
												AS "ges", 
 ("Internet" + 
	( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" 
	+ 200 
	+ ( "Handtuecher" * 8 ) 
	+ ( "Bettwaesche" * 8 ) 
	+ ( 2.8 * "Eewachsene" * "Tg1503_3110" ) 
	+ ( 1.8 * "Eewachsene" * "TgRest" ) 
	+ ((( (DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" ) / 100 )  * 2,75 )
 ) / 3 											AS "drittel", 
("Internet" + 
	( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" 
	+ 200 
	+ ( "Handtuecher" * 8 ) 
	+ ( "Bettwaesche" * 8 ) 
	+ ( 2.8 * "Eewachsene" * "Tg1503_3110" ) 
	+ ( 1.8 * "Eewachsene" * "TgRest" ) 
	+ ((( (DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" ) / 100 )  * 2,75 )
) - 
(("Internet" + 
	( DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" 
	+ 200 
	+ ( "Handtuecher" * 8 ) 
	+ ( "Bettwaesche" * 8 ) 
	+ ( 2.8 * "Eewachsene" * "Tg1503_3110" ) 
	+ ( 1.8 * "Eewachsene" * "TgRest" ) 
	+ ((( (DATEDIFF( 'day', "bisDT", "vonDT" ) ) * (- 1) * "PreisPTag" ) / 100 )  * 2,75 ) 
) 	/ 3 ) 										AS "rest", 
DATEDIFF( 'day', "bisDT", "vonDT" ) * (- 1) * "PreisPTag" AS "miete", 
DATEDIFF( 'day', "bisDT", "vonDT" ) * (- 1) * "PreisPTag" + 50 AS "miupu", 
"Handtuecher" * 8 AS "gfh", 
"Bettwaesche" * 8 AS "gfb", 
( DATEDIFF( 'day', "bisDT", "vonDT" ) * (- 1) * "PreisPTag" / 100 ) * 2.75 AS "Bettenst" 
FROM "Adressen" AS "Adressen"

Re: 2 Fragen, gebildete Felder weiter verwenden, Fehlermeldung fehlt

Verfasst: Mo 13. Jul 2020, 14:03
von ILEMax
Habe es gefunden ...
Hatte bei der 2,75 ein Komma statt eines Punktes geschrieben, somit waren da einige Komma zu viel.

Danke für die Mühe
der ILEMax