Wert aus einer Datenbank als Variable speichern und auswerten c#

mara75

Newbie
Registriert
Aug. 2023
Beiträge
3
Hallo zusammen ,
ich möchte Wert aus der Spale "MitFibuUebergabe"als Variable speichern und auswerten.Bei mir sieht das ganze so aus,funktioniert leider nicht,kann mir jemand vieleicht helfen?Was mache ich falsch?

int belegJahr = 0;
int belegNummer = 0;
var mandant = Mandant;

var query = "SELECT MitFibuUebergabe FROM KHKVKBelegarten INNER JOIN KHKVKBelege ON KHKVKBelegarten.Kennzeichen = KHKVKBelege.Belegkennzeichen WHERE Belegjahr = belegJahr AND Belegnummer = belegNummer AND Mandant = @mandant";
var command = mandant.MainDevice.GenericConnection.CreateSqlStringCommand(query);
command.AppendInParameter("mandant", typeof(short), mandant.Id);
command.AppendInParameter("Belegnummer", typeof(short), belegNummer);
command.AppendInParameter("Belegjahr", typeof(short), belegJahr);

try

{
using (var reader = command.ExecuteReader())
{
if (reader.Read())
{
string wert = reader.GetString(0);

if (wert != "-1")

{
var hausbank = parameters.TryGetItem("KHKVKBelege_USER_Hausbank").Value;

var query2 = "UPDATE KHKHausbanken SET QRIBANStandard = -1 WHERE Mandant = @mandant and HB = @HB";
var command2 = Mandant.MainDevice.GenericConnection.CreateSqlStringCommand(query2);
command2.AppendInParameter("mandant", typeof(short), Mandant.Id);
command2.AppendInParameter("HB", typeof(string), hausbank);
command2.ExecuteNonQuery();

}

}

}
 
Hi @mara75,

es wäre schön, wenn du die Programmiersprache nennst und den Code in Codetags setzt und entsprechend einrückst.
Z.B. so:
Code:
int belegJahr = 0;
int belegNummer = 0;
var mandant = Mandant;

var query = "SELECT MitFibuUebergabe FROM KHKVKBelegarten INNER JOIN KHKVKBelege ON KHKVKBelegarten.Kennzeichen = KHKVKBelege.Belegkennzeichen WHERE Belegjahr = belegJahr AND Belegnummer = belegNummer AND Mandant = @mandant";
var command = mandant.MainDevice.GenericConnection.CreateSqlStringCommand(query);
command.AppendInParameter("mandant", typeof(short), mandant.Id);
command.AppendInParameter("Belegnummer", typeof(short), belegNummer);
command.AppendInParameter("Belegjahr", typeof(short), belegJahr);

try {
    using (var reader = command.ExecuteReader())
    {
        if (reader.Read())
        {
            string wert = reader.GetString(0);
            if (wert != "-1")
            {
                var hausbank = parameters.TryGetItem("KHKVKBelege_USER_Hausbank").Value;
                var query2 = "UPDATE KHKHausbanken SET QRIBANStandard = -1 WHERE Mandant = @mandant and HB = @HB";
                var command2 = Mandant.MainDevice.GenericConnection.CreateSqlStringCommand(query2);
                command2.AppendInParameter("mandant", typeof(short), Mandant.Id);
                command2.AppendInParameter("HB", typeof(string), hausbank);
                command2.ExecuteNonQuery();
            }
        }
    }


Dadurch sieht man schon mal, dass in dem Teil 4x { und nur 3x } ist.
 
Hallo Mara,

Vielleicht ein paar nützliche Troubleshooting Ansätze:
1. Sollte in deiner ersten Query nicht auch die belegNummer und das belegJahr als Parameter ersetzt werden wie du es bereits bei "Mandant = @mandant" gemacht hast?
SQL:
var query = "SELECT MitFibuUebergabe FROM KHKVKBelegarten INNER JOIN KHKVKBelege ON KHKVKBelegarten.Kennzeichen = KHKVKBelege.Belegkennzeichen WHERE Belegjahr = @belegJahr AND Belegnummer = @belegNummer AND Mandant = @mandant";

2. Sind die Datentypen die du an die Methode AppendInParameter übergibst die gleichen wie in der Datenbank?
 
Sorry,das ist C#.Das ist nur ein Teil...an der } leigt nicht.
 
mara75 schrieb:
funktioniert leider nicht
Das lässt viel Spielraum für Interpretationen. Meckert die IDE, dass die Syntax falsch ist? Bekommst du eine (unbehandelte) Exception, wenn du das laufen lässt? Wird überhaupt die Datenbankverbindung korrekt hergestellt? Kommt aus reader.GetString(0); das falsche Ergebnis raus? Hat der Reader womöglich gar keine Datensätze und if (reader.Read()) liefert einfach nur false und macht daher gar nichts?

Je nach IDE gehst du einfach im Debug-Modus im Einzelschritt da durch und guckst dir Zeile für Zeile an was in den Variablen drinsteht, zum Beispiel im reader.
Ergänzung ()

JulianHD schrieb:
Sollte in deiner ersten Query nicht auch die belegNummer und das belegJahr als Parameter ersetzt werden wie du es bereits bei "Mandant = @mandant" gemacht hast?
Good catch. Das kann natürlich dazu führen, dass reader einfach nur leer ist, weil die SELECT-Anweisung fehlerhaft ist. Daher wie gesagt, Single Step im Debug-Modus ;)
 
Zuletzt bearbeitet:
Hallo Julian,

2.die Datentypen sind gleich wie in der Datenbank.
 
Zurück
Oben