ChristianStettner Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 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 Zitieren
Guybrush Threepwood Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 Wie wärs wenn du verrätst wie du das ganze ausführst damit irgendjemand überhaupt die Chance hat dir zu helfen? Zitieren
ChristianStettner Geschrieben 11. Dezember 2009 Autor Geschrieben 11. Dezember 2009 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. Zitieren
Argbeil Geschrieben 11. Dezember 2009 Geschrieben 11. Dezember 2009 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. Zitieren
Gateway_man Geschrieben 12. Dezember 2009 Geschrieben 12. Dezember 2009 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 Zitieren
ChristianStettner Geschrieben 17. Dezember 2009 Autor Geschrieben 17. Dezember 2009 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. Zitieren
TDM Geschrieben 17. Dezember 2009 Geschrieben 17. Dezember 2009 " 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: Zitieren
ChristianStettner Geschrieben 17. Dezember 2009 Autor Geschrieben 17. Dezember 2009 Hallo, entschuldigung, wenn es nicht so rüber kommt. ich habe das Query hier untereinander geschrieben. Im Quellcode ist das " & _ das ende der Zeile. Zitieren
TDM Geschrieben 17. Dezember 2009 Geschrieben 17. Dezember 2009 ok. Kommt der Fehler beim Kompilieren oder während der Laufzeit in der Abfrage? Ist der Connection-String richtig? Zitieren
ChristianStettner Geschrieben 17. Dezember 2009 Autor Geschrieben 17. Dezember 2009 Der Fehler tritt zur Laufzeit auf. Der Connectionstring stimmt auch. Zitieren
streffin Geschrieben 25. Dezember 2009 Geschrieben 25. Dezember 2009 (bearbeitet) 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 2009 von streffin Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.