If Anweisung schlägt fehl
Hallo zusammen
Ich habe ein problem mit einer If-Anweisung, hier schlägt der vergleich fehl.
Als ergebnis bekomme ich immer false.
Nun aber zu den Fakten damit ihr hier nicht in die Glaskugel schauen müsst.
Die Datenbank läuft auf einen SQL Server 2005 und die Management Console.
Ich schreibe auch hier die Abfrage. Ziel der Abfrage ist es aus 3 Tabellen 2 Variablen zu füllen die dann Verglichen werden sollen über die If anweisung.
Wenn die beiden Variblen gleich sind soll ein Zähler hochgezählt werden.
Die erste Tabelle durchlaufe ich mit einem cursor und hole mir ein Objekt, mit diesen suche ich dann in den anderen beiden Tabellen und fülle die beiden Variablen. Nennen wir sie V1 und V2
Die Anweisung lautet wie folgt:
IF V1 = V2
@zaehler = @zaehler +1
Der Zähler soll dann am schluss das Ergebnis mit den gleichen Datensätzen anzeigen.
Das füllen der Variablen klappt problemlos. Nur an der If Anweisung verzeiflich langsam. Denn egal wie die Variablen sind hält das Script sie immer für ungleich.
De Variablen sind alle mit nvarchar (max) deglariert so sind diese auch in den Tabellen hinterlegt.
Wenn ich mir die Variablen anzeigenlasse, über die Print Anweisung dann sieht es so aus.
SR SR,
GF GU,
0 Datensätze (Das ergebnis des Vergleiches)
Machen die Kommas was aus? Habe aber auch schon für V1 ein komma mit dazugeschrieben? beispiel: (@V1 = @v1 + ',' )
Oder liegt es evtl. an der Variablendeklartion?
Ich weiß leider nicht mehr wo ich ansetzen soll. Kenn mich in der VBA Programmierung einigermaßen aus und habe auch schon mit Access gearbeitet. Mit T-SQL habe ich erst angefangen.
Ich hoffe ihr könnt mir helfen.
Danke im voraus
net-tobi
Ich habe ein problem mit einer If-Anweisung, hier schlägt der vergleich fehl.
Als ergebnis bekomme ich immer false.
Nun aber zu den Fakten damit ihr hier nicht in die Glaskugel schauen müsst.
Die Datenbank läuft auf einen SQL Server 2005 und die Management Console.
Ich schreibe auch hier die Abfrage. Ziel der Abfrage ist es aus 3 Tabellen 2 Variablen zu füllen die dann Verglichen werden sollen über die If anweisung.
Wenn die beiden Variblen gleich sind soll ein Zähler hochgezählt werden.
Die erste Tabelle durchlaufe ich mit einem cursor und hole mir ein Objekt, mit diesen suche ich dann in den anderen beiden Tabellen und fülle die beiden Variablen. Nennen wir sie V1 und V2
Die Anweisung lautet wie folgt:
IF V1 = V2
@zaehler = @zaehler +1
Der Zähler soll dann am schluss das Ergebnis mit den gleichen Datensätzen anzeigen.
Das füllen der Variablen klappt problemlos. Nur an der If Anweisung verzeiflich langsam. Denn egal wie die Variablen sind hält das Script sie immer für ungleich.
De Variablen sind alle mit nvarchar (max) deglariert so sind diese auch in den Tabellen hinterlegt.
Wenn ich mir die Variablen anzeigenlasse, über die Print Anweisung dann sieht es so aus.
SR SR,
GF GU,
0 Datensätze (Das ergebnis des Vergleiches)
Machen die Kommas was aus? Habe aber auch schon für V1 ein komma mit dazugeschrieben? beispiel: (@V1 = @v1 + ',' )
Oder liegt es evtl. an der Variablendeklartion?
Ich weiß leider nicht mehr wo ich ansetzen soll. Kenn mich in der VBA Programmierung einigermaßen aus und habe auch schon mit Access gearbeitet. Mit T-SQL habe ich erst angefangen.
Ich hoffe ihr könnt mir helfen.
Danke im voraus
net-tobi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 14.03.2010 um 13:29:06 Uhr
De Variablen sind alle mit nvarchar (max) deglariert
Jezz' ist mir doch beim Lesen ein Äderchen geplatzt...Content-ID: 138156
Url: https://administrator.de/contentid/138156
Ausgedruckt am: 15.11.2024 um 23:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
wenn V1 und V2 Variablen sind sollte man wohl ein @ davor setzen. Und für die Zuweisung wäre ein SET wahrscheinlich nicht verkehrt.
IF @v1 = @v2
SET @zaehler = @zaehler + 1
http://msdn.microsoft.com/de-de/library/ms182717.aspx
http://msdn.microsoft.com/en-us/library/ms189484.aspx
Gruß
Filipp
wenn V1 und V2 Variablen sind sollte man wohl ein @ davor setzen. Und für die Zuweisung wäre ein SET wahrscheinlich nicht verkehrt.
IF @v1 = @v2
SET @zaehler = @zaehler + 1
http://msdn.microsoft.com/de-de/library/ms182717.aspx
http://msdn.microsoft.com/en-us/library/ms189484.aspx
Gruß
Filipp
Hallo,
[edit: Rest wieder gelöscht, aber schreibe das nächste Mal den richtigen Code, wenn du Hilfe zu dem Code haben willst]
Gruß
Filipp
[edit: Rest wieder gelöscht, aber schreibe das nächste Mal den richtigen Code, wenn du Hilfe zu dem Code haben willst]
Der Code läuft ohne Fehlermeldung durch nur das ich als ergebnis von den Vergleich als Ergebniss immer "false"
Tja... dann wird es vermutlich daran liegen, dass V1 und V2 nicht gleich sind.Gruß
Filipp
Halle net-tobi,
irgend etwas muss zwischen (in deinem Beispiel) V1 und V2 abweichen.
Schau dir doch mal testenshalber genau an, welchen Wert V1 und V2 haben und in welchem
Format. Wenn zum Beispiel V1=1.0 hat und V2="1.0" , dann liegt es daran, dass in diesem
Beispiel Äpfel mit Birnen verglichen werden und dann logischerweise ein FALSE zustande
kommt. Auch bitte darauf achten, dass V1 und V2 (wenn schon im gleichen Format) die gleichen
Längen haben [ len(V1) ; len(V2) ] etc.
Fahre deine Script mal Schritt für Schritt durch und schaue nochmals genau nach.
Passiert mir hin und wieder auch mal.
Gruss
Tsuki
irgend etwas muss zwischen (in deinem Beispiel) V1 und V2 abweichen.
Schau dir doch mal testenshalber genau an, welchen Wert V1 und V2 haben und in welchem
Format. Wenn zum Beispiel V1=1.0 hat und V2="1.0" , dann liegt es daran, dass in diesem
Beispiel Äpfel mit Birnen verglichen werden und dann logischerweise ein FALSE zustande
kommt. Auch bitte darauf achten, dass V1 und V2 (wenn schon im gleichen Format) die gleichen
Längen haben [ len(V1) ; len(V2) ] etc.
Fahre deine Script mal Schritt für Schritt durch und schaue nochmals genau nach.
Passiert mir hin und wieder auch mal.
Gruss
Tsuki