Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im Wünsche und Anregungs Forum

Vermissen Sie Funktionen? Hier können Sie Wünsche und Anregungen äußern aber auch Lob und Kritik loswerden.

THEMA: LookUp Heater; SQL-Tabellen Bezeichnung

LookUp Heater; SQL-Tabellen Bezeichnung 5 Jahre 5 Monate her #527

  • Stephan Sempert
  • Stephan Semperts Avatar
  • Offline
  • New Member
  • Beiträge: 3
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 ausserhalb der aktuellen Datenbank nicht funktioniert.

Beispiel:
[Kundenverwaltung.dbOwner.Adressen] -> falsch!
[Kundenverwaltung].[dbOwner].[Adressen] -> richtig!

Als Workaround kann man Verweise ausserhalb 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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: LookUp Heater; SQL-Tabellen Bezeichnung 5 Jahre 5 Monate her #528

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
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.
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.075 Sekunden