Jump to content

PeterWa

Members
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

0 Neutral

About PeterWa

  • Rank
    Newbie

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hallo! Ich sende die komplette Procedur. Nochmals die Function: Wenn Adresse und Rabattgruppe in @Kunden vorhanden, dann soll der Rabatt von @Kunde genommen werden. zB: '0007',3 Diese sind vorhanden und werden auch Übernommen Wenn aber statt der 3 eine 4, Dieser Kunde ist in der tblKundenrabatt nicht vorhanden. Er bekommt den @Special Rabatt Wenn ich die Proc ausführe und mit Print @Kunde und Print @Special konntroliere und @Kunde ist False ist das auch leer. Ich habe mich mit einer Unterabfrage abgemüht, wenn @Kunde ohne Ergebniss ist, eine 0 angezeigt wird, da bin ich aber an der Erstellung gescheitert Ich hoffe das ich jetzt alles richtig erklärt habe. mfg Peter ALTER Procedure [dbo].[spRabatt] @Rabattgruppe varchar(25), @Adresse Int, @Rabatt real Output AS Declare @Special as real Declare @Kunde as real Begin SET @Special = (SELECT Spezial FROM dbo.tblRabattgruppe WHERE Rabattgruppe = @Rabattgruppe); Set @Kunde = (Select Kundenrabatt FROM dbo.tblKundenRabatt WHERE Rabattgruppe = @Rabattgruppe And Kundenadresse = @Adresse); SET @Rabatt = @Kunde End
  2. Hallo! Mein Ziel: Es gibt in dieser Procedur 2 Abfragen die eine oben und eine die nur den Allgemeinen Rabatt beinhaltet. Wenn also die 1. Abfrage leer ist, dann wird die 2. Abfrage aktiv. Der Aufruf der Prc : @Rabattgruppe @Adresse @Rabatt steht für den Rückgabewert der Proc. Die Variableen @Kunde steht für die 1. Abfrage @Special steht für die 2. Abfrage Es sollte ungefähr so wie unten beschreiben klappen Ich stelle mir das zumindest so vor (vielleicht ein bischen Blauäugig?) if @Kunde = null SET @Rabatt = @Spcial -- Name der 2. Abfrage else SET @Rabatt =@Kunde mfg Peter
  3. Hallo und guten Morgen Bevor ich mein Problem erkläre möchte ich festhalten das dies meine ersten Schritte in SQL Server sind. Nun zur meiner Frage:: Wie behandelt man einen leeren Datensatz, Um es genauer zu sagen Wenn bei nachstehnder Abfrage kein Ergebniss vorhanden ist. wenn also bei nachstehender abfrage kein Wert vorhanden ist. Set @Kunde = (Select Kundenrabatt FROM dbo.tblKundenRabatt WheRE Rabattgruppe = @Rabattgruppe And Kundenadresse=@Adresse) Meine Versuche mit @Kunde is null oder @kunde = 0 Brachten mich leider nicht weiter, Besten dank für einen tipp im voraus! mfg Peter
  4. Hallo und Guten Morgen! Ich sollte meine Frage eigentlich anders stellen: Wie kann ich einer Variablen einen Standartwert zuweisen. Beim Aufruf mit Exec ist der Wert in @Betrag von und @Betragbis 0 Das der Filter nicht funktionieren kann ist wohl klar ........ Rechnungspreis Between @BetragVon and @BetragBis, and ...... Der Wert der Variablen @Betragbis sollte zB. "999999" sein SQL Server ist halt nicht VBA. Meine Versuche mit If und Case brachten leider auch nicht den gewünschten Erfolg. LG Peter
  5. Hallo und Guten Tag! Zuerst einmal ich bin neu im Forum. Ich habe mich bis jetzt mit Access "gespielt" und habe mir in den Kopf gesetzt meine Anwendung in SQL Server zu migrieren. Mein Thema Probleme mit Where ist vielleicht nicht ganz treffend. Ich versuche es aber trotzdem. Ich erstelle derzeit ein Formular Rechnungen suchen.Die Procedur: ALTER Proc [dbo].[spSuchenRechnung] @Kunde varchar(50) = 0, @Strasse Varchar(50) = 0, @PLZ varchar(10) = 0, @Ort varchar(50) = 0, @DatumVon date = Null, @DatumBis date = Null, @RgBetragVon Money = 0, @RgBetragBis Money = 0, @RGvon int = 0, @RgBis int = 0 AS SELECT * FROM dbo.tblRechnung LEFT JOIN dbo.tblKundenAdressen ON dbo.tblRechnung.Kundennummer = dbo.tblKundenAdressen.Adressnummer WHERE (CONCAT (Adresszeile_2, Adresszeile_1) LIKE @Kunde +'%') and -- or @Kunde + '%' is null) AND Strasse LIKE @Strasse +'%' and -- Or @Strasse is null AND PLZ LIKE @PLZ +'%' and --or @PLZ +'%' is null and Ort LIKE @Ort +'%' and ---or @ort +'%' is null and Rechnungsdatum Between @Datumvon and @Datumbis And Rechnungspreis Between @RgBetragVon and @RgBetragBis and Rechnungsnummer Between @rgvon And @rgbis ORDER BY dbo.tblRechnung.Rechnungsnummer, CONCAT (Adresszeile_2, Adresszeile_1); Zu meiner Frage: Ist es möglich in einer Where Bedingung eine Case function einzubauen? Wenn ich der Rechnungsnummer 0 (Null) übergebe dann sollen alle DS angezeibgt werden ansonsten die angegebene Nr Etwa so: Case @rgvon WHEN = 0 Then Rechnungsnummer > 0 When <> 0 Then Rechnungsnummer =@rgvon Ich müsste bei der RgNr nicht 2 Werte übergeben. Ich hoffe das ich mein Problem verständlich dargestellt habe. mfg Peter und schöne grüße aus Wien
×
×
  • Create New...