Jump to content

Empfohlene Beiträge

Geschrieben

Hallo,

in meiner BDE kommen häufig die gleichen Tabellenabfragen vor. 
Nun hatte ich mir gedacht,  am Anfang des Scripts alle ausgewählten Tabelleneinträge in lokalen Variablen abzuspeichern und dann nur noch mit den lokalen Variablen  zu arbeiten.  Erspart Mehrfachabfragen. Nur bekomme ich das noch nicht hin, ich lerne ja noch.

Ich hänge mal die Anlage an. Es geht in diesem Fall um das BDE, aber die Funktion kann man ja überall verwenden. Vielleicht hat jemand Lust das zu entwickeln. Danke

Gruß Jürgen

241001_KFZ-Ziele.mbp

Geschrieben (bearbeitet)
vor einer Stunde schrieb jloos:

Nun hatte ich mir gedacht,  am Anfang des Scripts alle ausgewählten Tabelleneinträge in lokalen Variablen abzuspeichern und dann nur noch mit den lokalen Variablen  zu arbeiten.  Erspart Mehrfachabfragen.

Hallo Jürgen,

Es wäre besser, du erklärst erst einmal, was du genau vorhast.

Deine Ereignisvariable „KFZ-Ziele“ enthält eine Liste mit 13 Ziele, die wiederum je eine Liste mit 2 Listen und dann jeweils nochmal 2Tabellen enthalten. Das finde ich von der Struktur her sehr unübersichtlich. In den Tabellen ganz zum Schluß findet man dann fahrzeugspezifische Daten/Variablen, die nur für bestimmte Fahrzeuge gelten können und wohl auch sollen, wie z.B. die für „Türen öffnen“ beim Bus und „Wartezeit“ zum Ein/Aussteigen.
Solche Variablen sind in den entsprechenden Fahrzeugen selbst viel besser aufgehoben und übersichtlicher per Schlagwort in den verschiedenen KfZ Typen zu verwenden. Zum Beispiel: Beim Coupe Schlagwort „KFZ“ und beim Zweiachser-Bus „BUS“

Die Liste „KFZ-Ziele“ sollten aus meiner jetzigen Einschätzung nur Angaben zu den Fahrwegen/Routen enthalten. Das Verhalten der unterschiedlichen Fahrzeuge am jeweiligen Zielpunkt sollte über Schlagworte gesteuert werden. 
 

VG,

Hawkeye

Bearbeitet von Hawkeye
Geschrieben

Hallo @Hawkeye,

Du hast Recht, ich hätte das besser erklären müssen.
Ich verfolge das Prinzip "Ich bin hier an der KFZ-Abfragestelle-Nr. 5 und bin KFZ-Nr. 1. Was soll ich tun, wo muss ich hin" Jeder Gleiskontakt hat eine KFZ-Abfragestelle-Nr., jedes Fahrzeug hat eine KFZ-Nr.

Ich habe also eine Datenbank KFZ-Ziele, mit einer ersten Liste aller KFZ-Abfragestelle-Nummern. Dahinter eine Tabelle mit allen KFZ-Nummern. Die Abfrage ist also KFZ-Abladestelle-Nr. + KFZ-Nr. Damit komme ich auf abzufragenden Daten, also Fahrgeschwindigkeit, nächstes Ziel, soll das Fahrzeug stoppen, wie lange ist die Wartezeit und ist eine Animation auszuführen, wenn ja welche. 

Ich möchte nur eine einzige Datenbankabfrage pro angefahrener Abfragestelle machen, wobei alle Daten in lokalen Variablen abgespeichert werden.

Ich mache die Fahrstraßensteuerung auch so. Hat meiner Meinung nach Vorteile, weil alle Steuerdaten zusammen in einer Datenbank zusammengefasst sind.

Das ist nur eine Beispielanlage.

Gruß Jürgen
 

KFZ-Ziele.jpg

Geschrieben
vor einer Stunde schrieb jloos:

Ich verfolge das Prinzip "Ich bin hier an der KFZ-Abfragestelle-Nr. 5 und bin KFZ-Nr. 1. Was soll ich tun, wo muss ich hin" Jeder Gleiskontakt hat eine KFZ-Abfragestelle-Nr., jedes Fahrzeug hat eine KFZ-Nr.

Hallo Jürgen,

Dein Thema hier lautet „Tabellenabfrage vereinfachen“.

Lösung: vereinfache deine Struktur der Datenbank. Packe die fahrzeugspezifischen Daten als Variablen in die Fahrzeuge und verwende statt den selbsterstellten Listen Schlagworte (Die betreffenden Objekte sind ja dann schon in einer internen Liste im Programm enthalten.

 

VG,

Hawkeye

Geschrieben
vor 4 Stunden schrieb Hawkeye:

Das Verhalten der unterschiedlichen Fahrzeuge am jeweiligen Zielpunkt sollte über Schlagworte gesteuert werden. 

Hallo @Hawkeye,

Du hast mich nicht überzeugt. Ich finde die Daten zentral an einer Stelle für alle Fahrzeuge (also auch in einer anderen Datenbank für Züge) sehr praktisch. 
Soll der Porsche KFZ-Nr. 3 am Gleiskontakt mit der Nr. 2 mit 15 in den Drive In vom McDonalds fahren, so stelle ich das in der Datenbank ein. Ein anderes Fahrzeug soll aber weiter fahren und die Geschwindigkeit nicht verringern.

Aber das war ja auch nicht das Thema der  Anfrage.
 

Ich möchte die 4 oder 5 oder 6 Variablen, die unter Abfragestelle und FahrzeugNr. am Anfang des scripts einmalig einlesen in lokale Variablen.

Das script funktioniert ja so wie es ist. Ich möchte nur die Mehrfachabfragen vermeiden, dazu benötige ich Eure Hilfe, das kann ich nicht in Lua.

Gruß Jürgen

Geschrieben
vor 11 Minuten schrieb jloos:

Ich möchte die 4 oder 5 oder 6 Variablen, die unter Abfragestelle und FahrzeugNr. am Anfang des scripts einmalig einlesen in lokale Variablen.

Das ist aber nicht sinnvoll, Jürgen.
Du gewinnst nichts durch das Anlegen lokaler Kopien.

local ist innerhalb einer Funktion sinnvoll. Und Funktionsparameter sind per se local.

Geschrieben (bearbeitet)
vor 27 Minuten schrieb jloos:

Ich möchte die 4 oder 5 oder 6 Variablen, die unter Abfragestelle und FahrzeugNr. am Anfang des scripts einmalig einlesen in lokale Variablen.

Hallo Jürgen, 

hier die lokalen Variablen Var_1 bis Var_6 in deinem benutzerdefinierten Ereignis. 

Screenshot2024-10-01153456.thumb.jpg.eb35f70a237779481dc5eaec34cebcb8.jpg

Hier im Ereignisprotokoll das Ergebnis gedruckt. 

Screenshot2024-10-01153525.jpg.920779ba6a846ff2ea3402290c8f9dbc.jpg

 

vor 13 Minuten schrieb Goetz:

Das ist aber nicht sinnvoll, Jürgen.

Da stimme ich Götz zu. 

VG,

Hawkeye

Bearbeitet von Hawkeye
Geschrieben

Hallo 

vor 43 Minuten schrieb jloos:

Das script funktioniert ja so wie es ist.

Dann lass es doch so.

Mit den lokalen Variablen wirst du dich verrennen, da das benutzerdefinierte Ereignis von jedem Fahrzeug aufgerufen wird das einen Gleiskontakt erreicht. Dann werden die lokalen Variablen überschrieben und durch deine Verzögerungen kommt dann Chaos heraus.

Aber auch das muß man erst mal erkennen. Try ….. and fail ;)

VG,

Hawkeye

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...