phpbar.de logo

Mailinglisten-Archive

=?ISO-8859-1?Q?Merkw=FCrdige?= Fehler bei Abfrage aus Access2000 -> myODBC -> mySQL

Merkw�rdige Fehler bei Abfrage aus Access2000 -> myODBC -> mySQL

Ulrich Kretschmer U.Kretschmer@bergruf.de
Wed Nov 6 10:17:02 2002


Hallo allerseits,

folgendes Problem: Die Abfrage1 (siehe unten) in Access2K (Microsoft-SQL) 
funktioniert (sorry f�r diesen langen Salat, aber so sieht sie halt 
aus...). Die ganzen Klammern bei WHERE werden von Access eingef�gt.

Zum Verst�ndnis: es werden f�r einen Serienbrief Personen selektiert, nebst 
den damit verkn�pften Adressen. Dazu noch Firma-Anrede und Person-Anrede 
sowie Land jeweils aus verkn�pften Tabellen. Die Selektion wird dann noch 
nach einem Kriterium "Vorgang" (wiederum aus einer verkn�pften Tabelle) 
eingeschr�nkt.

Wenn ich die Abfrage nun bei WHERE noch um eine weitere Einschr�nkung 
erg�nze (siehe unten als "Abfrage2") funktioniert sie _nicht_ mehr.

Es kommt folgende Fehlermeldung von myODBC:
"Unbekannte Tabelle 'firma_anrede' in field list. (#1109)"
(Logfile-Auszug siehe unten)

Bei manchen Aufrufen (Abfrage unver�ndert!) wird auch beanstandet, da� die 
Tabelle 'personen' unbekannt ist.

Ich steh hier auf dem Schlauch. Die bem�kelten Tabellen existieren.
=> Wer hat eine Idee, woran es liegen k�nnte, d.h. warum die Tabellen nicht 
gefunden werden?

Ulrich


### Abfrage 1 (funktioniert)
SELECT personen.PersonNr, personen.PersonAnredeNr, 
person_anrede.PersonAnrede, person_anrede.personanrede2, 
person_anrede.personanredekurz, personen.Titel, personen.Vorname, IIf
([personen].[nachname]="*","",[personen].[nachname]) AS Nachname, 
personen.Serienbrief_Sperre, personen.LoeschVM, personen.Bemerkungen, 
personen.Serienbrief_Zusatz, Adressen.AdrNr, firma_anrede.Firma_Anrede, 
Adressen.Firma1, Adressen.Firma2, IIf([firma_anrede.Firma_Anrede]
="Herr","Herrn",[firma_anrede.Firma_Anrede]) & IIf(IsNull
([firma_anrede.Firma_Anrede]),""," ") & [Firma1] & " " & [Firma2] AS Firma, 
IIf(IsNull([Sammel_PLZ]),IIf(IsNull([PF_PLZ]),[Strasse],"Postfach " & 
[Postfach]),"") AS STR, [Regionen].[StaatKfz] & "-" & IIf(IsNull
([Sammel_PLZ]),IIf(IsNull([PF_PLZ]),[StrPLZ],[PF_PLZ]),[Sammel_PLZ]) AS 
PLZ, regionen.StaatKfz, Adressen.Ort, IIf(IsNull([PF_PLZ]) Or IsNull
([Sammel_PLZ]),"",[Ortsteil]) AS Ortsteil2, Adressen.Serienbrief_Sperre, 
Adressen.LoeschVM, Person_Vorgang.LoeschVM, [person_anrede].[personanrede2] 
& " " & IIf((IsNull([Titel])),"",[Titel] & " ") & IIf((IsNull
([Vorname])),"",[Vorname] & " ") & [Nachname] & IIf((IsNull
([Serienbrief_Zusatz])),""," " & [Serienbrief_Zusatz]) AS NameAufbereitet, 
[person_anrede].[personanrede] & " " & IIf((IsNull([Titel])),"",[Titel] 
& " ") & IIf((IsNull([Vorname])),"",[Vorname] & " ") & [Nachname] & IIf
((IsNull([Serienbrief_Zusatz])),""," " & [Serienbrief_Zusatz]) AS 
NameAufbereitet2, [person_anrede].[personanrede2] & " " & IIf((IsNull
([Titel])),"",[Titel] & " ") & IIf((IsNull([Vorname])),"",[Vorname] & " ") 
& [Nachname] AS NameAufbereitetOhneZusatz, [person_anrede].[personanrede] 
& " " & IIf((IsNull([Titel])),"",[Titel] & " ") & IIf((IsNull
([Vorname])),"",[Vorname] & " ") & [Nachname] AS 
NameAufbereitetOhneZusatz2, Person_Vorgang.VorgangsNr, IIf
([firma_anrede.Firma_Anrede]="Herr","Herrn",[firma_anrede.Firma_Anrede]) & 
IIf(IsNull([firma_anrede.Firma_Anrede]),""," ") & [Firma1] AS 
Firma1_aufbereitet
FROM person_anrede RIGHT JOIN (firma_anrede RIGHT JOIN (regionen INNER JOIN 
(Person_Vorgang INNER JOIN (Adressen INNER JOIN personen ON Adressen.AdrNr 
= personen.AdrNr) ON Person_Vorgang.PersonNr = personen.PersonNr) ON 
regionen.RegionNr = Adressen.RegionNr) ON firma_anrede.Firma_Anrede_Nr = 
Adressen.Firma_Anrede) ON person_anrede.PersonAnredeNr = 
personen.PersonAnredeNr
WHERE (((personen.Serienbrief_Sperre)=False) AND ((personen.LoeschVM)
=False) AND ((Adressen.Serienbrief_Sperre)=False) AND ((Adressen.LoeschVM)
=False) AND ((Person_Vorgang.LoeschVM)=False));


### Abfrage 2 (funktioniert nicht mehr):

SELECT personen.PersonNr, personen.PersonAnredeNr, 
person_anrede.PersonAnrede, person_anrede.personanrede2, 
person_anrede.personanredekurz, personen.Titel, personen.Vorname, IIf
([personen].[nachname]="*","",[personen].[nachname]) AS Nachname, 
personen.Serienbrief_Sperre, personen.LoeschVM, personen.Bemerkungen, 
personen.Serienbrief_Zusatz, Adressen.AdrNr, firma_anrede.Firma_Anrede, 
Adressen.Firma1, Adressen.Firma2, IIf([firma_anrede.Firma_Anrede]
="Herr","Herrn",[firma_anrede.Firma_Anrede]) & IIf(IsNull
([firma_anrede.Firma_Anrede]),""," ") & [Firma1] & " " & [Firma2] AS Firma, 
IIf(IsNull([Sammel_PLZ]),IIf(IsNull([PF_PLZ]),[Strasse],"Postfach " & 
[Postfach]),"") AS STR, [Regionen].[StaatKfz] & "-" & IIf(IsNull
([Sammel_PLZ]),IIf(IsNull([PF_PLZ]),[StrPLZ],[PF_PLZ]),[Sammel_PLZ]) AS 
PLZ, regionen.StaatKfz, Adressen.Ort, IIf(IsNull([PF_PLZ]) Or IsNull
([Sammel_PLZ]),"",[Ortsteil]) AS Ortsteil2, Adressen.Serienbrief_Sperre, 
Adressen.LoeschVM, Person_Vorgang.LoeschVM, [person_anrede].[personanrede2] 
& " " & IIf((IsNull([Titel])),"",[Titel] & " ") & IIf((IsNull
([Vorname])),"",[Vorname] & " ") & [Nachname] & IIf((IsNull
([Serienbrief_Zusatz])),""," " & [Serienbrief_Zusatz]) AS NameAufbereitet, 
[person_anrede].[personanrede] & " " & IIf((IsNull([Titel])),"",[Titel] 
& " ") & IIf((IsNull([Vorname])),"",[Vorname] & " ") & [Nachname] & IIf
((IsNull([Serienbrief_Zusatz])),""," " & [Serienbrief_Zusatz]) AS 
NameAufbereitet2, [person_anrede].[personanrede2] & " " & IIf((IsNull
([Titel])),"",[Titel] & " ") & IIf((IsNull([Vorname])),"",[Vorname] & " ") 
& [Nachname] AS NameAufbereitetOhneZusatz, [person_anrede].[personanrede] 
& " " & IIf((IsNull([Titel])),"",[Titel] & " ") & IIf((IsNull
([Vorname])),"",[Vorname] & " ") & [Nachname] AS 
NameAufbereitetOhneZusatz2, Person_Vorgang.VorgangsNr, IIf
([firma_anrede.Firma_Anrede]="Herr","Herrn",[firma_anrede.Firma_Anrede]) & 
IIf(IsNull([firma_anrede.Firma_Anrede]),""," ") & [Firma1] AS 
Firma1_aufbereitet
FROM person_anrede RIGHT JOIN (firma_anrede RIGHT JOIN (regionen INNER JOIN 
(Person_Vorgang INNER JOIN (Adressen INNER JOIN personen ON Adressen.AdrNr 
= personen.AdrNr) ON Person_Vorgang.PersonNr = personen.PersonNr) ON 
regionen.RegionNr = Adressen.RegionNr) ON firma_anrede.Firma_Anrede_Nr = 
Adressen.Firma_Anrede) ON person_anrede.PersonAnredeNr = 
personen.PersonAnredeNr
WHERE (((personen.Serienbrief_Sperre)=False) AND ((personen.LoeschVM)
=False) AND ((Adressen.Serienbrief_Sperre)=False) AND ((Adressen.LoeschVM)
=False) AND ((Person_Vorgang.LoeschVM)=False) AND 
((Person_Vorgang.VorgangsNr)=800));


#### Auszug aus dem Logfile von myODBC:

MSACCESS        101-111	ENTER SQLExecDirectW 
		HSTMT               090C5078
		WCHAR *             0x15F93E18 [      -3] "SELECT 
`person_anrede`.`PersonAnrede` ,`person_anrede`.`personanrede2` ,`person_anr
ede`.`personanredekurz` ,`firma_anrede`.`Firma_Anrede` ,`regionen`.`StaatKfz
` ,`person_vorgang`.`VorgangsNr` ,`person_vorgang`.`LoeschVM` ,`adressen`.`A
drNr` ,`adressen`.`Firma1` ,`adressen`.`Firma2` ,`adressen`.`Strasse` ,`adre
ssen`.`StrPLZ` ,`adressen`.`Ortsteil` ,`adressen`.`Ort` ,`adressen`.`Postfac
h` ,`adressen`.`PF_PLZ` ,`adressen`.`Sammel_PLZ` ,`adressen`.`Serienbrief_Sp
erre` ,`adressen`.`LoeschVM` ,`personen`.`PersonNr` ,`personen`.`Vorname` ,`
personen`.`Nachname` ,`personen`.`PersonAnredeNr` ,`personen`.`Titel` ,`pers
onen`.`Serienbrief_Sperre` ,`personen`.`LoeschVM` ,`personen`.`Bemerkungen` 
,`personen`.`Serienbrief_Zusatz`  FROM `person_vorgang`,`regionen`,{oj 
`adressen` LEFT OUTER JOIN `person_anrede` ON (`adressen`.`Firma_Anrede` = 
`firma_anrede`.`Firma_Anrede_Nr` ) } WHERE 
(((((`adressen`.`Serienbrief_Sperre` = 0) AND (`adressen`.`LoeschVM` = 0) ) 
AND (`adressen`.`AdrNr` = `personen`.`AdrNr` ) ) AND 
((((`person_vorgang`.`LoeschVM` = 0) AND (`person_vorgang`.`VorgangsNr` = 
800 ) ) AND (`person_vorgang`.`PersonNr` = `personen`.`PersonNr` ) ) AND 
((`personen`.`Serienbrief_Sperre` = 0) AND (`personen`.`LoeschVM` = 
0) ) ) ) AND (`regionen`.`RegionNr` = `adressen`.`RegionNr` ) ) \ 0"
		SDWORD                    -3

MSACCESS        101-111	EXIT  SQLExecDirectW  with return code -1 
(SQL_ERROR)
		HSTMT               090C5078
		WCHAR *             0x15F93E18 [      -3] "SELECT 
`person_anrede`.`PersonAnrede` ,`person_anrede`.`personanrede2` ,`person_anr
ede`.`personanredekurz` ,`firma_anrede`.`Firma_Anrede` ,`regionen`.`StaatKfz
` ,`person_vorgang`.`VorgangsNr` ,`person_vorgang`.`LoeschVM` ,`adressen`.`A
drNr` ,`adressen`.`Firma1` ,`adressen`.`Firma2` ,`adressen`.`Strasse` ,`adre
ssen`.`StrPLZ` ,`adressen`.`Ortsteil` ,`adressen`.`Ort` ,`adressen`.`Postfac
h` ,`adressen`.`PF_PLZ` ,`adressen`.`Sammel_PLZ` ,`adressen`.`Serienbrief_Sp
erre` ,`adressen`.`LoeschVM` ,`personen`.`PersonNr` ,`personen`.`Vorname` ,`
personen`.`Nachname` ,`personen`.`PersonAnredeNr` ,`personen`.`Titel` ,`pers
onen`.`Serienbrief_Sperre` ,`personen`.`LoeschVM` ,`personen`.`Bemerkungen` 
,`personen`.`Serienbrief_Zusatz`  FROM `person_vorgang`,`regionen`,{oj 
`adressen` LEFT OUTER JOIN `person_anrede` ON (`adressen`.`Firma_Anrede` = 
`firma_anrede`.`Firma_Anrede_Nr` ) } WHERE 
(((((`adressen`.`Serienbrief_Sperre` = 0) AND (`adressen`.`LoeschVM` = 0) ) 
AND (`adressen`.`AdrNr` = `personen`.`AdrNr` ) ) AND 
((((`person_vorgang`.`LoeschVM` = 0) AND (`person_vorgang`.`VorgangsNr` = 
800 ) ) AND (`person_vorgang`.`PersonNr` = `personen`.`PersonNr` ) ) AND 
((`personen`.`Serienbrief_Sperre` = 0) AND (`personen`.`LoeschVM` = 
0) ) ) ) AND (`regionen`.`RegionNr` = `adressen`.`RegionNr` ) ) \ 0"
		SDWORD                    -3

		DIAG [S1000] [TCX][MyODBC]Unbekannte Tabelle 'firma_anrede' 
in field list. (1109) 

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive