tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1372
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    OdinPG OdinPG ist offline Grünschnabel
    Registriert seit
    Jul 2007
    Beiträge
    4
    hi
    Ich habe gerade folgendes Problem: Ich möchte Datensätze aus einer Datenbanl auslesen. Nun kann es aber sein, dass das Datumsfeld gueltig_bis leer ist, weshalb ich versucht habe ein IF mit einzubauen.
    Und genau da liegt jetzt mein Problem...
    Ich bekomme immer die folgende Fehlermeldung: Falsche Syntax in der Nähe des THEN-Schlüsselwortes.
    Wenn das Datumsfeld nicht leer ist, dann soll eine weitere Bedingung ans WHERE gehängt werden. Ansonsten nichts.

    Hier ist der SQL String:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    sql = "SELECT t_objekt_vertrag.id, t_objekt_vertrag.gueltig_ab, t_objekt_vertrag.gueltig_bis "
    sql = sql & ",t_vertragsmgnt_zahlungsverkehr.id, t_vertragsmgnt_zahlungsverkehr.vertrag_id "
    sql = sql & ",t_vertragsmgnt_zahlungsverkehr.objekt, t_vertragsmgnt_zahlungsverkehr.Kontoinhaber "
    sql = sql & ",t_vertragsmgnt_zahlungsverkehr.Kontonr, t_vertragsmgnt_zahlungsverkehr.BLZ "
    sql = sql & ",t_vertragsmgnt_zahlungsverkehr.Kreditinstitut, t_vertragsmgnt_zahlungsverkehr.Verwendungszweck "
    sql = sql & ",t_vertragsmgnt_zahlungsverkehr.Waehrung " 
    sql = sql & "FROM (t_objekt_vertrag RIGHT OUTER JOIN "
    sql = sql & "t_vertragsmgnt_zahlungsverkehr ON t_vertragsmgnt_zahlungsverkehr.vertrag_id = t_objekt_vertrag.id) "
    sql = sql & "WHERE DATEPART(yyyy, [t_objekt_vertrag].[gueltig_ab])<=" & Request.QueryString("Jahr") & " AND "
    sql = sql & "DATEPART(yyyy, [t_objekt_vertrag].[gueltig_bis])>=" & Request.QueryString("Jahr") & " AND "
    sql = sql & "DATEPART(mm, [t_objekt_vertrag].[gueltig_ab])<=" & monat & " "
    sql = sql & "IF ISNULL([t_objekt_vertrag].[gueltig_bis], '') THEN "
    sql = sql & " ' ' "
    sql = sql & "ELSE THEN  'AND DATEPART(mm, [t_objekt_vertrag].[gueltig_bis])' "
    sql = sql & "END "

    Ich hoffe ihr könnt mir dabei helfen, denn ich weiss echt nicht mehr weiter
     

  2. #2
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hallo

    Du musst das Feld sql-technisch abfragen und die Syntax ist von Datenbank zu Datenbank unterschiedlich.

    bsp. Access

    select iif(isnull(firma),'keine Firma vorhanden',firma) as fFirma from Tabelle

    für MSSQL bzw. MySQL müsste ich selbst im Manual nachlesen. Ich glaube da wird mit case when gearbeitet.

    Wie Du es machst, kann es aus 2 Gründen nicht funktionieren

    1. Man kann kein Feld verarbeiten, was noch nicht selectiert worden ist
    2. Die Syntax ist falsch (if - then - else - end if)

    Man kann zwar eine SQL durch Abfragen dyn. aufbauen, hierfür muss aber die Anforderung über ein Formular, eine Session, Cookie oder Querystring kommen.

    Nochwas, Du solltest keinen nicht überprüften QueryString auf die SQL loslassen, das ist eine enorme Sicherheitslücke. Such mal auf www.aspheute.com nach SQL Injection oder Parametrisierte Kommandos.
    Geändert von Luzie (26.10.07 um 22:12 Uhr)
     
    liebe Grüße, die Luzie

  3. #3
    OdinPG OdinPG ist offline Grünschnabel
    Registriert seit
    Jul 2007
    Beiträge
    4
    Hi
    Vielen Dank für die Antwort.

    Zum Thema SQL Injection, das wird nicht im Internet benutzt, sondern im intranet, wo man von aussen nicht drauf zugreifen kann.

    Aber trotzdem danke für den Hinweis
     

Ähnliche Themen

  1. Statement
    Von brainsucker im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 03.10.07, 12:58
  2. TQuery Insert Statement, Fehler bei Memo Feld
    Von Sapperlot im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 15.11.06, 13:30
  3. ODBC MySQL SQL-Statement Fehler
    Von Sircoly im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 18.09.06, 16:13
  4. Fehler bei MySQL Statement (SELECT)
    Von chofer02 im Forum Relationale Datenbanksysteme
    Antworten: 9
    Letzter Beitrag: 29.08.06, 19:08
  5. Fehler in WHERE ... AND ... Statement
    Von stonk im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 15.07.05, 16:43