Nicole: SQL; LIKE- Abfrage

Hallo!
Ich habe folgende Abfrage:

SELECT vFN_Gerät_Händler.Fabriknummer, vFN_Gerät_Händler.Kundenauftragsnummer, vFN_Gerät_Händler.Endkundennummer, vEndkunden.Name, vEndkunden.Name_2, vEndkunden.Strasse, vEndkunden.PLZ, vEndkunden.Ort, vEndkunden.Kennzeichen, vFN_Gerät_Händler.Händlerschlüssel, vFN_Gerät_Händler.Name, vFN_Gerät_Händler.Name_2, vFN_Gerät_Händler.Strasse, vFN_Gerät_Händler.PLZ, vFN_Gerät_Händler.Ort, vFN_Gerät_Händler.Kennzeichen, vFN_Gerät_Händler.Geräteschlüssel, vFN_Gerät_Händler.Gerätebezeichnung, vFN_Gerät_Händler.Gerätetyp, vFN_Gerät_Händler.Gerätetypenbezeichnung, vFN_Gerät_Händler.Produktionsort, vFN_Gerät_Händler.Rechnungsnummer, vFN_Gerät_Händler.[Bestellnummer STB], vFN_Gerät_Händler.Bemerkung, vFN_Gerät_Händler.[im Umbau seit], vFN_Gerät_Händler.[Versand-Avis], vFN_Gerät_Händler.[Versandfertig seit:], vFN_Gerät_Händler.[Lieferdatum STB], vFN_Gerät_Händler.[Lieferdatum Endkunde], vFN_Gerät_Händler.Lieferkennzeichen, vFN_Gerät_Händler.[KZ H/E/I]
FROM vEndkunden RIGHT JOIN vFN_Gerät_Händler ON vEndkunden.Endkundennummer = vFN_Gerät_Händler.Endkundennummer
WHERE (((vFN_Gerät_Händler.Geräteschlüssel) Like [bitte geben Sie einen gültigen Geräteschlüssel ein:]))
ORDER BY vFN_Gerät_Händler.Geräteschlüssel;

die Abfrage funktioniert einwandfrei, nur wenn kein Datensatz vorhanden ist, erhalte ich ein leeres Formular. Ich möchte aber gerne, dass, falls kein DS voarhanden ist, dass eine Meldung hochkommt, dass zu dem eingegebenen Suchkriterium kein DS vorhanden ist.

Kann mir jemand weiterhelfen? Danke!!

  1. Hallo Nicole,

    Du verrätst uns leider nichts über die Datenbank und die sonstigen Umstände deiner Abfrage. Deine Datenbank wird wohl irgendeine Moeglichkeit haben, um anzuzeigen, wieviele Datensaetze gefunden wurden. Bei PHP/MySQL waere das zB. mysql_num_rows.
    Dein Programm muss also etwa so aussehen:
    Abfrage = "der String aus deinem Posting"
    Resultat = abfrage_function(Abfrage);
    if(Resultat)
    {
      gib das Resultat in einer Schleife aus
    }
    ansonsten
    {
      gib aus 'leider nichts gefunden'
    }

    Sorry, das ist ein kleines bisschen allgemein, aber wie gesagt, dein Posting ist nicht allzu aufschlussreich.

    Gruß,

    Dieter

  2. Hi,

    deine Aufgabenstellung wäre eigentlich eine Aufgabe für die Ausgabelogik...
    Man _könnte_ einen UNION anfügen, der einen künstlichen Datensatz erstellt, aber wozu? Zumal der dann auch bei vorhandenen Suchergebnissen vorhanden wäre...

    MfG
    Rouven

    --
    -------------------
    ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
  3. Servus Nicole ;~)

    SELECT vFN_Gerät_Händler.Fabriknummer, vFN_Gerät_Händler.Kundenauftragsnummer, vFN_Gerät_Händler.Endkundennummer, vEndkunden.Name, vEndkunden.Name_2, vEndkunden.Strasse, vEndkunden.PLZ, vEndkunden.Ort, vEndkunden.Kennzeichen, vFN_Gerät_Händler.Händlerschlüssel, vFN_Gerät_Händler.Name, vFN_Gerät_Händler.Name_2, vFN_Gerät_Händler.Strasse, vFN_Gerät_Händler.PLZ, vFN_Gerät_Händler.Ort, vFN_Gerät_Händler.Kennzeichen, vFN_Gerät_Händler.Geräteschlüssel, vFN_Gerät_Händler.Gerätebezeichnung, vFN_Gerät_Händler.Gerätetyp, vFN_Gerät_Händler.Gerätetypenbezeichnung, vFN_Gerät_Händler.Produktionsort, vFN_Gerät_Händler.Rechnungsnummer, vFN_Gerät_Händler.[Bestellnummer STB], vFN_Gerät_Händler.Bemerkung, vFN_Gerät_Händler.[im Umbau seit], vFN_Gerät_Händler.[Versand-Avis], vFN_Gerät_Händler.[Versandfertig seit:], vFN_Gerät_Händler.[Lieferdatum STB], vFN_Gerät_Händler.[Lieferdatum Endkunde], vFN_Gerät_Händler.Lieferkennzeichen, vFN_Gerät_Händler.[KZ H/E/I]

    Währe hier ein Asterik evtl. nicht einfacher?

    FROM vEndkunden RIGHT JOIN vFN_Gerät_Händler ON vEndkunden.Endkundennummer = vFN_Gerät_Händler.Endkundennummer

    Soweit ich weiß, besagt der SQL-92+99-Standard, dass es "right outer join" heißt. Wohl wieder irgend eine Floskel der jeweiligen DBMS ;~)

    WHERE (((vFN_Gerät_Händler.Geräteschlüssel) Like [bitte geben Sie einen gültigen Geräteschlüssel ein:]))

    Wieso verwendest Du hier Like und nicht den "="-Operator?
    Like ist für den Gebrauch von Wildcards und anderen Platzhaltern (_ und %) konzipiert worden. Das "=" wäre hier performanter.

    die Abfrage funktioniert einwandfrei, nur wenn kein Datensatz vorhanden ist, erhalte ich ein leeres Formular. Ich möchte aber gerne, dass, falls kein DS voarhanden ist, dass eine Meldung hochkommt, dass zu dem eingegebenen Suchkriterium kein DS vorhanden ist.

    Mit SQL kannst Du nicht direkt Meldungen in dem Sinne erzeugen, wie Du es Dir vorstellst (einige DBMS vielleicht schon eher). Ich nehme an, dass der Benutzer in einem Textfeld den Suchstring für "bitte geben Sie einen gültigen Geräteschlüssel ein:" eingibt. In diesem Fall könntest Du diese Funktion direkt in die Anwendung implementrieren. Oder soll der Benutzer etwa das SQL-Statement verwenden? Direkt an dem DBMS?

    Freundliche Grüße
    Stefano Albrecht