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