Veröffentlicht 11. Dezember 200915 j Hallo, ich habe folgende Abfrage gebastelt. SELECT (UNTERNEHMEN.FIRMA1), (UNTERNEHMEN.FIRMA2), (UNTERNEHMEN.STRASSE), (UNTERNEHMEN.LKZ), (UNTERNEHMEN.PLZ), (UNTERNEHMEN.ORT), (PERSONEN.ANREDE), (PERSONEN.TITEL), (PERSONEN.VORNAME), (PERSONEN.NACHNAME), (PERSONEN.EMAIL_GESCHAEFTLICH1), (PERSONEN.TELEFON_GESCHAEFTLICH1), (PERSONEN.TELEFAX_GESCHAEFTLICH1) FROM (UNTERNEHMEN) INNER JOIN ((PERSONEN) INNER JOIN ((MEDIEN) INNER JOIN (BEZIEHUNGEN) ON (MEDIEN.MEDIUM_ID) = (BEZIEHUNGEN.MEDIUM_ID_1)) ON (PERSONEN.PERSON_ID) = (BEZIEHUNGEN.PERSON_ID_1)) ON (UNTERNEHMEN.UN_ID) = (BEZIEHUNGEN.UN_ID_1) WHERE(((BEZIEHUNGEN.KUNDE_ID_1) = 730) And ((BEZIEHUNGEN.BEZIEHUNGSTYP_ID) = 4) And ((MEDIEN.MEDIUM_ID) = 4393 ) And ((BEZIEHUNGEN.FUNKTION_ID_1) = 1) AND ((PERSONEN.AUSGESCHIEDEN) = 0)) GROUP BY (UNTERNEHMEN.FIRMA1), (UNTERNEHMEN.FIRMA2), (UNTERNEHMEN.STRASSE), (UNTERNEHMEN.LKZ), (UNTERNEHMEN.PLZ), (UNTERNEHMEN.ORT), (PERSONEN.ANREDE), (PERSONEN.TITEL), (PERSONEN.VORNAME), (PERSONEN.NACHNAME), (PERSONEN.EMAIL_GESCHAEFTLICH1), (PERSONEN.TELEFON_GESCHAEFTLICH1), (PERSONEN.TELEFAX_GESCHAEFTLICH1) Wenn ich diese Im SQL-Server-Query-Analyzer ausführe, bekomme ich auch meine Ergebnisse. Wenn ich sie im VB-Code ausführen möchte, bekomme ich die Fehlermeldung Ungültiger Objektname 'UNTERNEHMEN'. Ungültiger Objektname 'PERSONEN'. Ungültiger Objektname 'MEDIEN'. Ungültiger Objektname 'BEZIEHUNGEN'. Kann mir jemand sagen, wo der Fehler liegt? Gruß Christian
11. Dezember 200915 j Wie wärs wenn du verrätst wie du das ganze ausführst damit irgendjemand überhaupt die Chance hat dir zu helfen?
11. Dezember 200915 j con.Open() Dim sSQLDUP As String = "SELECT (UNTERNEHMEN.FIRMA1), (UNTERNEHMEN.FIRMA2), (UNTERNEHMEN.STRASSE), (UNTERNEHMEN.LKZ), (UNTERNEHMEN.PLZ), (UNTERNEHMEN.ORT), (PERSONEN.ANREDE), (PERSONEN.TITEL), (PERSONEN.VORNAME), (PERSONEN.NACHNAME), (PERSONEN.EMAIL_GESCHAEFTLICH1), (PERSONEN.TELEFON_GESCHAEFTLICH1), (PERSONEN.TELEFAX_GESCHAEFTLICH1) " & _ "FROM UNTERNEHMEN INNER JOIN (PERSONEN INNER JOIN (MEDIEN INNER JOIN BEZIEHUNGEN ON (MEDIEN.MEDIUM_ID) = (BEZIEHUNGEN.MEDIUM_ID_1)) ON (PERSONEN.PERSON_ID) = (BEZIEHUNGEN.PERSON_ID_1)) ON (UNTERNEHMEN.UN_ID) = (BEZIEHUNGEN.UN_ID_1) " & _ "WHERE(((BEZIEHUNGEN.KUNDE_ID_1) = " & frmHaupt.KID & ") And ((BEZIEHUNGEN.BEZIEHUNGSTYP_ID) = 4) And ((MEDIEN.MEDIUM_ID) = " & MedienID & " ) And ((BEZIEHUNGEN.FUNKTION_ID_1) = 1) AND ((PERSONEN.AUSGESCHIEDEN) = 0)) " & _ "GROUP BY (UNTERNEHMEN.FIRMA1), (UNTERNEHMEN.FIRMA2), (UNTERNEHMEN.STRASSE), (UNTERNEHMEN.LKZ), (UNTERNEHMEN.PLZ), (UNTERNEHMEN.ORT), (PERSONEN.ANREDE), (PERSONEN.TITEL), (PERSONEN.VORNAME), (PERSONEN.NACHNAME), (PERSONEN.EMAIL_GESCHAEFTLICH1), (PERSONEN.TELEFON_GESCHAEFTLICH1), (PERSONEN.TELEFAX_GESCHAEFTLICH1)" Dim DRDUP_KuAP As DbDataReader Dim SQLDUP_KuAP As New SqlCommand(sSQLDUP, con) DRDUP_KuAP = SQLDUP_KuAP.ExecuteReader Das ist der Code wo es ausgeführt wird. Danach werden die einzelnen Werte an Variablen übergeben, welche für die weitere Arbeit verwendet werden.
11. Dezember 200915 j Vermutlich gehst du mit einem anderen User auf den Server oder hast eine andere Datenbank im Connection-String, dann stimmen die Schema-Informationen nicht mehr. Zudem (ich habe da durchaus missionarische Ansprüche) ist es eine schlechte Vorgehensweise das SQL Command auf diese Weise in den Code zu kneten, das wird irgendwann unwartbar. Besser ist es so ,funktioniert unter VB.NET genau so.
12. Dezember 200915 j Wow da vergeht einem ja die Lust die Querry zu analysieren. Versuchs mal mit einer anderen, angenehmeren Formatierung. Kleiner Hinweis zu SQL. SQL hat gerne mal die Eigenschaft Spaltennamen die schon belegt sind oder umlaute oder sonstiges enthalten, umzubennen. Sprich der SQL server macht in solchen Fällen zwei eckige Klammern um den Namen, was man oft nicht gleich merkt. Geh einfach mal in den Serverexplorer und schau dir mal die Spalten an. Spätestens dann siehst du ob es daran gelegen hat. Lg Gateway
17. Dezember 200915 j Dim sSQLDUP As String = "SELECT [uNTERNEHMEN].[FIRMA1], [uNTERNEHMEN].[FIRMA2], [uNTERNEHMEN].[sTRASSE], [uNTERNEHMEN].[LKZ], [uNTERNEHMEN].[PLZ], [uNTERNEHMEN].[ORT], [PERSONEN].[ANREDE], [PERSONEN].[TITEL], [PERSONEN].[VORNAME], [PERSONEN].[NACHNAME], [PERSONEN].[email_GESCHAEFTLICH1], [PERSONEN].[TELEFON_GESCHAEFTLICH1], [PERSONEN].[TELEFAX_GESCHAEFTLICH1] " & _ "FROM UNTERNEHMEN INNER JOIN (PERSONEN INNER JOIN (MEDIEN INNER JOIN BEZIEHUNGEN ON [MEDIEN].[MEDIUM_ID] = [bEZIEHUNGEN].[MEDIUM_ID_1]) ON [PERSONEN.PERSON_ID] = [bEZIEHUNGEN.PERSON_ID_1]) ON [uNTERNEHMEN.UN_ID] = [bEZIEHUNGEN.UN_ID_1] " & _ "WHERE(([bEZIEHUNGEN].[KUNDE_ID_1] = " & frmHaupt.KID & ") And ([bEZIEHUNGEN].[bEZIEHUNGSTYP_ID] = 4) And ([MEDIEN].[MEDIUM_ID] = " & MedienID & " ) And ([bEZIEHUNGEN].[FUNKTION_ID_1] = 1) AND ([PERSONEN].[AUSGESCHIEDEN] = 0)) " & _ "GROUP BY [uNTERNEHMEN].[FIRMA1], [uNTERNEHMEN].[FIRMA2], [uNTERNEHMEN].[sTRASSE], [uNTERNEHMEN].[LKZ], [uNTERNEHMEN].[PLZ], [uNTERNEHMEN].[ORT], [PERSONEN].[ANREDE], [PERSONEN].[TITEL], [PERSONEN].[VORNAME], [PERSONEN].[NACHNAME], [PERSONEN].[email_GESCHAEFTLICH1], [PERSONEN].[TELEFON_GESCHAEFTLICH1], [PERSONEN].[TELEFAX_GESCHAEFTLICH1]" Hoffe es ist nun leichter zu lesen. Ich habe es nun mit den eckigen-Klammer versucht, bekomme aber die gleiche Fehlermeldung.
17. Dezember 200915 j " gilt nur für eine Zeile. Ergo: Dim sSQLDUP As String = _ "SELECT [UNTERNEHMEN].[FIRMA1], " & _ "[UNTERNEHMEN].[FIRMA2], " & _ "[UNTERNEHMEN].[STRASSE], " & _ "[UNTERNEHMEN].[LKZ], " & _ "[UNTERNEHMEN].[PLZ], " & _ "[UNTERNEHMEN].[ORT], " & _ "[PERSONEN].[ANREDE], " & _ "[PERSONEN].[TITEL], " & _ "[PERSONEN].[VORNAME], " & _ "[PERSONEN].[NACHNAME], " & _ "[PERSONEN].[EMAIL_GESCHAEFTLICH1], " & _ "[PERSONEN].[TELEFON_GESCHAEFTLICH1], " & _ "[PERSONEN].[TELEFAX_GESCHAEFTLICH1] " & _ usw. [Editerle] Probiers mal mit StoredProcedures + Parameter sonst kommt noch jemand auf die Idee SQL-Injektion zu betreiben. :floet:
17. Dezember 200915 j Hallo, entschuldigung, wenn es nicht so rüber kommt. ich habe das Query hier untereinander geschrieben. Im Quellcode ist das " & _ das ende der Zeile.
17. Dezember 200915 j ok. Kommt der Fehler beim Kompilieren oder während der Laufzeit in der Abfrage? Ist der Connection-String richtig?
25. Dezember 200915 j Ok, das ist soweit ichs seh kein .Net Fehler (dein Programm das de da schreibst), das ist SQL Fehler. Also, was haben wir da an Fehlerquellen, wenns im SQL Managmentstudio tut, ich würd sagen der Connection String, da der nicht gepostet wurd, und wir auch nicht wissen wie was wo die DB aussieht, kann mans nicht beschreien. Aber, eines is recht offensichtlich, deine Tabellen werden nicht gefunden. Mach mal folgendes, statt im From Teil deiner Abfrage nur den Tabellennamen zu schreiben, nimm da mal den DB namen mit. Also im Sinne von SELECT * FROM meineDB.dbo.Tabelle1 Das schadet nie wenn man sagen mer mal die ausführliche Schreibweise benutzt, gibt ja Aliase damit man sich nich tot schreibt dran. Und mhhm, so n bissl einrücken tut auch SQL sehr gut wenn mans hinterher lesen können will. Zusätzlich würd ich mal n paar Aliase vergeben, und nicht Klammern setzen damit Klammern gesetzt sind, sonder nur da Klammern, wo man ne Klammer semantisch auch braucht. Gruß Sven Bearbeitet 25. Dezember 200915 j von streffin
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.