- Beiträge: 3
SQL Heater liefert nicht das gewünschte Ergebnis
- Christoph Sauerborn
- Autor
- Offline
- Benutzer
Weniger
Mehr
5 Jahre 3 Monate her #3780
von Christoph Sauerborn
SQL Heater liefert nicht das gewünschte Ergebnis wurde erstellt von Christoph Sauerborn
Hallo zusammen,
folgendes Szenario: Ich habe auf der Read Seite Datenbank A mit Tabelle 'auftraege' und auf der Write Seite ebenfalls Datenbank A mit Tabelle 'auftraege' sowie Datenbank B mit Tabelle 'bkz_table_kiste'. Ich möchte Werte in Tabelle 'auftraege' updaten, sofern in Tabelle 'bkz_table_kiste passende Werte zu Einträgen aus 'auftraege' zu finden sind.
Ich habe daher einen SQL Heater aufgesetzt, der auf den Adapter von DB B gerichtet ist. Dieser fragt ab, ob zum Parameter $Material$ in Tab. B1 ein Wert in der Spalte BKZ zu finden ist.
Select BKZ from bkz_table_kiste Where Material='$Material$' Limit 1
Sofern kein Ergebnis gefunden wird, soll der Wert 0 zurückgegeben werden.
Leider erhalte ich immer den Wert 0 zurück. Ich habe den Query bereits direkt im SQL-Server eingegeben mit entsprechenden Parametern - dort erhalte ich ein Ergebnis. Was mache ich falsch?
Besten Dank vorab für die Hilfe!
folgendes Szenario: Ich habe auf der Read Seite Datenbank A mit Tabelle 'auftraege' und auf der Write Seite ebenfalls Datenbank A mit Tabelle 'auftraege' sowie Datenbank B mit Tabelle 'bkz_table_kiste'. Ich möchte Werte in Tabelle 'auftraege' updaten, sofern in Tabelle 'bkz_table_kiste passende Werte zu Einträgen aus 'auftraege' zu finden sind.
Ich habe daher einen SQL Heater aufgesetzt, der auf den Adapter von DB B gerichtet ist. Dieser fragt ab, ob zum Parameter $Material$ in Tab. B1 ein Wert in der Spalte BKZ zu finden ist.
Select BKZ from bkz_table_kiste Where Material='$Material$' Limit 1
Sofern kein Ergebnis gefunden wird, soll der Wert 0 zurückgegeben werden.
Leider erhalte ich immer den Wert 0 zurück. Ich habe den Query bereits direkt im SQL-Server eingegeben mit entsprechenden Parametern - dort erhalte ich ein Ergebnis. Was mache ich falsch?
Besten Dank vorab für die Hilfe!
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
5 Jahre 3 Monate her #3781
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf SQL Heater liefert nicht das gewünschte Ergebnis
Hallo Herr Sauerborn,
Wurde der Parameter $Material$ auch mit dem Set Parameter Heater gesetzt?
Wenn ja, welcher FlowHeater Datentyp liegt dem Feld über dem der Parameter gesetzt wird zugrunde. Ist das ein numerischer Datentyp kann es sein, dass hier die automatische Datentypumwandlung die Ursache ist.
z.B. wird ein Wert über eintausend in den deutschen Standardeinstellungen als „1.000“ umgewandelt. Sollte es sich um einen Wert mit nachkommstellen handeln ggf. auch mit Nachkommastellen.
Sie können das ändern, indem Sie den Parameter über Menü->Bearbeiten->Parameter anlegen und ihm eine abweichende Formatierung zuweisen, siehe Screenshot.
Alternativ dazu könnten Sie auch den String Format Heater verwenden bevor der Parameter gesetzt wird.
Im Anhang finden Sie ein kleines Beispiel dazu.
Wurde der Parameter $Material$ auch mit dem Set Parameter Heater gesetzt?
Wenn ja, welcher FlowHeater Datentyp liegt dem Feld über dem der Parameter gesetzt wird zugrunde. Ist das ein numerischer Datentyp kann es sein, dass hier die automatische Datentypumwandlung die Ursache ist.
z.B. wird ein Wert über eintausend in den deutschen Standardeinstellungen als „1.000“ umgewandelt. Sollte es sich um einen Wert mit nachkommstellen handeln ggf. auch mit Nachkommastellen.
Sie können das ändern, indem Sie den Parameter über Menü->Bearbeiten->Parameter anlegen und ihm eine abweichende Formatierung zuweisen, siehe Screenshot.
Alternativ dazu könnten Sie auch den String Format Heater verwenden bevor der Parameter gesetzt wird.
Im Anhang finden Sie ein kleines Beispiel dazu.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Christoph Sauerborn
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 3
5 Jahre 3 Monate her #3782
von Christoph Sauerborn
Christoph Sauerborn antwortete auf SQL Heater liefert nicht das gewünschte Ergebnis
Hallo Herr Stark,
das war schon sehr hilfreich. Mir war nicht klar, dass ich den Parameter konkret Setten muss, ich hatte anderen Foren-Beiträge so verstanden, dass es ausreicht, wenn ein solcher Parameter als Feldname in einem der Adapter hinterlegt ist.
Zumindest erhalte ich nun Ergebnisse, mit der Ausnahme, dass die Werte, die ich aus der SQL erhalte, ein falsches Format zu haben scheinen. Ich habe Beispiele aus dem Forum genutzt und frage den Wert mit folgendem Query ab:
string sql = String.Format("Select masse from auftraege where Material='{0}'",material);
object masse= AdaptersWrite[0].Execute(sql, true);
return masse;
Der Eintrag ist dann in meiner SQL ein leeres Feld, also nicht NULL sondern leer. Muss ich noch eine Umwandlung zu einem String durchführen?
Besten Dank für die kompetente Hilfe!
das war schon sehr hilfreich. Mir war nicht klar, dass ich den Parameter konkret Setten muss, ich hatte anderen Foren-Beiträge so verstanden, dass es ausreicht, wenn ein solcher Parameter als Feldname in einem der Adapter hinterlegt ist.
Zumindest erhalte ich nun Ergebnisse, mit der Ausnahme, dass die Werte, die ich aus der SQL erhalte, ein falsches Format zu haben scheinen. Ich habe Beispiele aus dem Forum genutzt und frage den Wert mit folgendem Query ab:
string sql = String.Format("Select masse from auftraege where Material='{0}'",material);
object masse= AdaptersWrite[0].Execute(sql, true);
return masse;
Der Eintrag ist dann in meiner SQL ein leeres Feld, also nicht NULL sondern leer. Muss ich noch eine Umwandlung zu einem String durchführen?
Besten Dank für die kompetente Hilfe!
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
5 Jahre 3 Monate her #3783
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf SQL Heater liefert nicht das gewünschte Ergebnis
Hallo Herr Sauerborn,
in der aktuellen Version kann im SQL bzw. Lookup Heater für den Standard Rückgabewert nicht NULL bzw. DBNULL angegeben bzw. ausgewählt werden. In der aktuellen Beta Version wurde dieses Feature nun eingebaut.
Alternativ dazu könnte über den IF-THEN-ELSE Heater geprüft werden ob das Feld Leer bzw. einen bestimmten Wert hat um dann explizit mittels des NULL Heater dem Feld DBNULL zuzuweisen, siehe Screenshot.
BetaVersion Download
FlowHeaterBeta 32 Bit
FlowHeaterBeta 64 Bit
FlowHeaterServer Beta
in der aktuellen Version kann im SQL bzw. Lookup Heater für den Standard Rückgabewert nicht NULL bzw. DBNULL angegeben bzw. ausgewählt werden. In der aktuellen Beta Version wurde dieses Feature nun eingebaut.
Alternativ dazu könnte über den IF-THEN-ELSE Heater geprüft werden ob das Feld Leer bzw. einen bestimmten Wert hat um dann explizit mittels des NULL Heater dem Feld DBNULL zuzuweisen, siehe Screenshot.
BetaVersion Download
FlowHeaterBeta 32 Bit
FlowHeaterBeta 64 Bit
FlowHeaterServer Beta
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Christoph Sauerborn
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 3
5 Jahre 3 Monate her #3784
von Christoph Sauerborn
Christoph Sauerborn antwortete auf SQL Heater liefert nicht das gewünschte Ergebnis
Hallo Herr Stark,
mein Ziel ist es nicht, dass in der DB "NULL" steht, sondern der Rückgabewert der SQL-Abfrage. Meine Frage ist vielmehr, ob ich hier:
object masse= AdaptersWrite[0].Execute(sql, true);
return masse;
noch eine Umwandlung in einen String durchführen muss, bevor ich "return masse;" ausführen lasse.
Viele Grüße
mein Ziel ist es nicht, dass in der DB "NULL" steht, sondern der Rückgabewert der SQL-Abfrage. Meine Frage ist vielmehr, ob ich hier:
object masse= AdaptersWrite[0].Execute(sql, true);
return masse;
noch eine Umwandlung in einen String durchführen muss, bevor ich "return masse;" ausführen lasse.
Viele Grüße
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
5 Jahre 3 Monate her #3785
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf SQL Heater liefert nicht das gewünschte Ergebnis
nein, das ist nicht notwendig. Der FlowHeater wandelt das automatisch in den aktuell benötigten Datentyp um.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
5 Jahre 3 Monate her #3786
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf SQL Heater liefert nicht das gewünschte Ergebnis
wenn bei Ihnen eine Leere Zeichenfolge ausgegeben wird. liegt das vermutlich an dem generierten SQL. Zum testen einfach mal den SQL String zurückgeben (return sql;) und anzeigen lassen. Ich gehen mal davon aus, dass hier das gleich Problem mit der Formatierung der WHERE Klausel vorliegt.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.311 Sekunden