- Beiträge: 3
LookUp Heater; SQL-Tabellen Bezeichnung
- Stephan Sempert
- Autor
- Offline
- Benutzer
Weniger
Mehr
13 Jahre 4 Monate her #527
von Stephan Sempert
LookUp Heater; SQL-Tabellen Bezeichnung wurde erstellt von Stephan Sempert
Im Feld "Tabelle" des Loopup-Heaters kann prinzipiel auch eine Tabelle in einer anderen als der aktuellen Datenbank angesprochen werden. Allerdings macht es eine Automatik von FH etwas, ... unhandlich?.
Die Schreibweise (mindestens beim MS-SQL-Server) für solche Verweise lautet:
Datenbank.Schema.Tabelle
also z.B.
Kundenverwaltung.dbOwner.Adressen
Das Problem: FH schreibt um den Tabellennamen die optionalen " [ ] " . Das ist einerseits gut, weil damit eventuelle Leerzeichen im Namen keine Fehler im SQL-Code verursachen.
Beispiel [Adressen alt]
Andererseits ist das nicht so gut, weil dass bei Verweisen außerhalb der aktuellen Datenbank nicht funktioniert.
Beispiel:
[Kundenverwaltung.dbOwner.Adressen] -> falsch!
[Kundenverwaltung].[dbOwner].[Adressen] -> richtig!
Als Workaround kann man Verweise außerhalb der aktuellen Datenbank so schreiben:
Kundenverwaltung].[dbOwner].[Adressen
FH macht dann daraus die korrekte Syntax:
[Kundenverwaltung].[dbOwner].[Adressen] -> richtig
Vielleicht könnte man die Eigenschaften im Heater LookUp um optionale Felder "Datenbank" und "Schema" erweitern und so eine "korrekte" Syntax ermöglichen?
BG
Stephan
Die Schreibweise (mindestens beim MS-SQL-Server) für solche Verweise lautet:
Datenbank.Schema.Tabelle
also z.B.
Kundenverwaltung.dbOwner.Adressen
Das Problem: FH schreibt um den Tabellennamen die optionalen " [ ] " . Das ist einerseits gut, weil damit eventuelle Leerzeichen im Namen keine Fehler im SQL-Code verursachen.
Beispiel [Adressen alt]
Andererseits ist das nicht so gut, weil dass bei Verweisen außerhalb der aktuellen Datenbank nicht funktioniert.
Beispiel:
[Kundenverwaltung.dbOwner.Adressen] -> falsch!
[Kundenverwaltung].[dbOwner].[Adressen] -> richtig!
Als Workaround kann man Verweise außerhalb der aktuellen Datenbank so schreiben:
Kundenverwaltung].[dbOwner].[Adressen
FH macht dann daraus die korrekte Syntax:
[Kundenverwaltung].[dbOwner].[Adressen] -> richtig
Vielleicht könnte man die Eigenschaften im Heater LookUp um optionale Felder "Datenbank" und "Schema" erweitern und so eine "korrekte" Syntax ermöglichen?
BG
Stephan
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
13 Jahre 4 Monate her #528
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 Aw: LookUp Heater; SQL-Tabellen Bezeichnung
Ja, da haben Sie Recht, der ist hier durchaus verbesserungswürdig. Was auch nicht ganz schön gelöst ist, ist dass der Lookup Heater Eingangsparameter anhand des Typs in das SQL WHERE Statement formatiert.
z.B.
Eingangsparameter ist Integer WHERE "ID = $1" wird zu ID = 1001
Eingangsparameter ist String WHERE "ID = $1" wird zu ID = '1001'
Bei Datumsangaben ist es noch schwieriger, da hier Datenbanken die meisten Unterschiede aufweisen.
Da es nicht ganz einfach ist an dieser Stelle alle erdenklichen Datenbanken (Access, MS SQL Server, MySQL, Oracle, ODBC bzw. OleDB) abzubilden wurde das bisher nicht weiter angegangen.
Ihr Verbesserungsvorschlag wurde mit auf die TODO Liste gesetzt, demnächst wird der Datenbank Lookup Heater deutlich verbessert.
Für Spezial Lookups können Sie auch den .NET Script Heater mit folgendem Skript verwenden. Datenbank, Schema etc. können hier frei definiert werden.
z.B.
Eingangsparameter ist Integer WHERE "ID = $1" wird zu ID = 1001
Eingangsparameter ist String WHERE "ID = $1" wird zu ID = '1001'
Bei Datumsangaben ist es noch schwieriger, da hier Datenbanken die meisten Unterschiede aufweisen.
Da es nicht ganz einfach ist an dieser Stelle alle erdenklichen Datenbanken (Access, MS SQL Server, MySQL, Oracle, ODBC bzw. OleDB) abzubilden wurde das bisher nicht weiter angegangen.
Ihr Verbesserungsvorschlag wurde mit auf die TODO Liste gesetzt, demnächst wird der Datenbank Lookup Heater deutlich verbessert.
Für Spezial Lookups können Sie auch den .NET Script Heater mit folgendem Skript verwenden. Datenbank, Schema etc. können hier frei definiert werden.
Code:
public object DoWork()
{
if (InValues.Length != 1)
throw new Exception("1 Eingangsparameter erwwartet");
// ersten Eingangsparameter holen
string sID = (string)InValues[0].GetString();
if (sID == null)
return null;
// folgendes SQL Statemnet falls ID als (Ganz)Zahl in der Tabelle definiert ist
string sql = "select IHR_WERT from IHRE_TABELLE where ID = " + sID;
// folgendes SQL Statemnet falls ID als CHAR/VARCHAR in der Tabelle definiert ist
//string sql = "select IHR_WERT from IHRE_TABELLE where ID = '" + sID + "'";
return AdapterWrite.Execute(sql, true);
// oder für ein Datenbank Lookup auf der READ Seite
return AdapterRead.Execute(sql, true);
}
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.255 Sekunden