INSERT INTO soll nur fehlende Datensätze kopieren

Gotenks

Mitglied
Danke Yaslaw, schaue ich mir mal an :)



Jetzt habe ich alles nach plan geändert doch nun kommt bei:
C#:
using (SqlDataReader reader = cmd.ExecuteReader())
Der fehler:
In der Nähe von 'durch' wurde ein nicht boolescher Ausdruck in einem Kontext angegeben, in dem eine Bedingung erwartet wird.

ist eine SQLException.

habe die richtige connection angegeben, habe die leerzeichen hinzugefügt und ich habe die korrekten Values übergeben :/

Wie kann ich den Fehler lösen?

LG
 

Yaslaw

n/a
Moderator
Geh mal mein Tutorial duch und poste uns den endgültigen SQL-String. Irgendwo da drin befindet sich ein Fehler.
In deinerm zuletzt geposteten Code fehlen Leerzeichen. Mit dem Ausgeben des Property cmd.CommandText sieht man auch wo.
 

DimpiM

Mitglied
Breakpoint setzten und dein commandtext anschauen...
Das bedeutet, dass er irgendein Wert nicht in ein Boolschen Wert konvertieren kann.
 

Gotenks

Mitglied
DANKE SEHR an beide :)

Hat alles Super geklappt.

Wollte jetzt nur noch in die erste If-Anweisung, eine Messagebox hinzufügen, sodass jedesmal wenn keine INSERT INTO benutzt wird soll die MessageBox bescheid geben, dass keine neuen Datensätze vorhanden sind.

habe ich auch so eingefügt und hat auch sofort geklappt, dass einzige problem ist, dass er dann für jede Zeile diese MessageBox anzeigt :/

Kann mann diesen erst nicht am ende der if anweisung machen sodass er erst alle zeilen durch geht und dann schreibt ob es keine oder neue datensätze gibt?

und wenn neue datensätze hinzugefügt werden, diese messagebox habe ich in die else anweisung gepackt :)

Lg
 

Yaslaw

n/a
Moderator
Kenne .NET nicht, aber vom Prinzip her ists eigentlich überal gleich. Einen Flag setzen der einmal auf TRUE immer auf TRE bleibt
Code:
Boolean flag = false

for each element in Menge
    if(argument ODER flag==true) flag = true
next element

if(flag == true)
    mach was
end if
 

Gotenks

Mitglied
Was bringt mir dieses flag?
Ich will doch das er mir eine MessageBox anzeigt wenn es neue oder keine neuen datensätze hinzufügt wurden sind .?

Dann habe ich noch eine frage, eine Datensätze aus Excel haben enthalten keinen wert und sobald ich mein Programm ausführe, sagt er mir halt, dass dort ein wert fehlt, aber das wieß ich, wie kann ich dem programm kalr machen, dass es ruhig leer bleiben kann?

Weil er vergleicht ja zunächst Zweck 1 mit @zweck1 und Zweck2 mit @zweck2 und wenn dort was anderes ist kommt eine neue Zeile, doch dann kommt der Fehler, dass eine bestimmte Zelle keine zugewiesene Variable hat, weil Sie ja leer bleibt :/

Also meine frage, wie kann ich dem Programm sagen, dass wenn Leere Zellen kommen, dass er dann in die Datenbank einfach leere Datensätze hinzufügt?

Lg
 

DimpiM

Mitglied
Wenn irgendetwas leer von excel kommt, dann prüf das und schreib in die Datenbank entweder ein leeren String oder DBNull.Value
 

Gotenks

Mitglied
Habe es gefunden, habe es mit einem leeren string ersetzt :)

Doch wie kann ich DBNull.Value auf ein String oder Interger verwenden?

habe das so gelöst:
C#:
if(meldung.Value2 != null)
{
meldung = Convert.ToString(rngMeldung.Value2);
}
else
{
meldung = " ";
}

Doch nun möchte ich mein einem INT-Wert, dass er nicht 0 überträgt sondern besser DBNull.Value(also das Feld soll Leer bleiben).
Also wenn eine Zelle bei der Excel Datei LEER ist, soll er nicht 0 übertragen sondern ein LEERES Feld?

LG
 

DimpiM

Mitglied
direkt im Parameter
also bei
Code:
cmd.Parameter.AddWithValue("@foo", DBNull.Value);

natürlich muss dein SQL Feld auch so deklariert sein, dass es NULL Werte zulässt
 

Gotenks

Mitglied
aber wenn ich das so mache, wie du es geschrieben hast, so definiere ich die komplette variable mit dbnull und somit nimmt sie nie einen anderen wert an...****

Also er soll ja schon erst überprüfen ob was drinne ist und wenn nicht, dann soll er das Feld Leer lassen.

Okay nun komme ich zu einer ganz neuen frage, wir hatten ja das gespräch mit stored procedure (gespeicherte prozeturen) . Ich möchte so eine Prozeture erstellen, doch da ich sowas nie gemacht hab muss ich mich einlesen, dass würde kein problem sein, doch eine Allgemeine frage hätte ich da,
Ich möchte eine Prozeture erstellen, die jedesmal bei Button-Click eine SQL anweisung durchführt z.B. zwei Tabellen miteinander verknüpfen(join-anweisung) und dann die neu gejointe tabelle(aus zwei soll eine werde) in eine neue Tabelle in der Datenbank anlegen.

Würde soetwas gehen?

Lg
 

Neue Beiträge