Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  TM - Plant Simulation
  mehrere Attribute durchsuchen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  mehrere Attribute durchsuchen (1156 mal gelesen)
Buexxxe
Mitglied
Student

Sehen Sie sich das Profil von Buexxxe an!   Senden Sie eine Private Message an Buexxxe  Schreiben Sie einen Gästebucheintrag für Buexxxe

Beiträge: 9
Registriert: 03.12.2008

erstellt am: 04. Mrz. 2009 16:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich habe mal eine Frage bezüglich des Durchsuchen von einem BE nach Attributen.
Folgende Situation:
Meinem BE habe ich benutzerdefiniere Attribute zugewiesen. Sie heißen "Code001" und werden bis bis "Code140" durchlaufen. Sie sind vom Typen "String" und dort befindet sich eine Information.
Diese Information möchte ich nun abrufen. Da ich die Codes ja durchnummeriert habe, könnte ich mir vorstellen, dass man eine Methode schreiben kann, in der die Attritube alle von Code001 bis Code140 durchlaufen werden und dabei soll ein bestimmter Z.B. ABC gesucht werden. Geht sowas in der Art??? Ich möchte quasi in einer Methode später überprüfen: durchsuche das BE nach allen "Codes00x" mit x als Laufindex nach dem String "ABC", falls vorhanden, dann mache dies und das.
Über einen Tipp oder Link im Forum wäre ich dankbar.
MfG
Buexxxe

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Homer Simpson
Mitglied



Sehen Sie sich das Profil von Homer Simpson an!   Senden Sie eine Private Message an Homer Simpson  Schreiben Sie einen Gästebucheintrag für Homer Simpson

Beiträge: 345
Registriert: 14.09.2005

erstellt am: 05. Mrz. 2009 09:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Buexxxe 10 Unities + Antwort hilfreich

so gehts:
Code:
is
    i : integer;
    name : string;
do
    for i := 1 to 140 loop
        name := to_str(i);
        name := sprint("Code", copy("00",1,3-strlen(name)), name);
        print @.holeAttribut(name);
    next;
end;

Es wäre übrigens einfacher, wenn die Namen keine führenden Nullen hätten.
Außerdem würde ich in Erwägung ziehen, die Daten in einem einzigen Attribut vom Datentyp Tabelle zu halten.

[Diese Nachricht wurde von Homer Simpson am 05. Mrz. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Buexxxe
Mitglied
Student

Sehen Sie sich das Profil von Buexxxe an!   Senden Sie eine Private Message an Buexxxe  Schreiben Sie einen Gästebucheintrag für Buexxxe

Beiträge: 9
Registriert: 03.12.2008

erstellt am: 05. Mrz. 2009 09:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

moin homer,

besten dank schon mal für die fixe antwort.
ich habe zwei wege in betracht gezogen: einmal den, den ich hier gepostet habe, der andere sieht so aus, dass ich einen (ellen-)langen string mit sämtlichen codes habe, die nur in einem attibut (namens: code) sind. der string sieht ungefähr so aus "abc_def_ghi_usw". ne methode die 3er päckchen rauszu ziehen und dann zu verarbeiten hab ich auch, jedoch gibt es auch teilweise versch. abhängigkeiten, d.h. bei dem code "abc" würde aktion a ausgelöst werden, aber bei "abc" und "def" passiert was anderes. und das weiß ich nicht so genau zu trennen. da dacte ich mir, wenn ich jeden einzelnen code ein attribut zuordne, könnte ich das vielleicht besser handlen!??!
wie meintest du das denn mit der tabelle??
besten dank nochmal

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ereignisverwalter
Mitglied
Simulant

Sehen Sie sich das Profil von Ereignisverwalter an!   Senden Sie eine Private Message an Ereignisverwalter  Schreiben Sie einen Gästebucheintrag für Ereignisverwalter

Beiträge: 7
Registriert: 04.03.2009

erstellt am: 05. Mrz. 2009 12:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Buexxxe 10 Unities + Antwort hilfreich

Suche in Tabellen ist eine Standardfunktion. Also ein Attribut mit Namen (z.B.) Code(datatype:table) anlegen, Zeilenindex enthält Code0010, Code0020, ..., Spalten enthalten die Werte.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Buexxxe
Mitglied
Student

Sehen Sie sich das Profil von Buexxxe an!   Senden Sie eine Private Message an Buexxxe  Schreiben Sie einen Gästebucheintrag für Buexxxe

Beiträge: 9
Registriert: 03.12.2008

erstellt am: 05. Mrz. 2009 13:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hallo ereignisverwalter,

aber ist dann dann nicht egal, ob ich die Werte aus der Tabelle oder aus allen Attributen einzeln rausziehe???

Hab jetzt ein kleines anderes Problem. Das mit der Methode, die Homer gezeigt hatte ist schon gut. Muss das ganze jetzt noch erweitern, so dass ich mit den Werten ne Aktion auslöse. Das klappt auch, so zum Beipiel:

is
    i : integer;
    name : string;

do
    for i := 1 to 137 loop
        name := to_str(i);
name := sprint("Code", copy("00",1,3-strlen(name)), name);
        print @.holeAttribut(name);
if @.holeAttribut(name) = "Z42" then
@.umlagern(Rolle2);
end;
    next;
end;


Das klappt wie gesagt. Jetzt hab ich aber ne code-abhängigkeit, z.b. wenn Z42 und Z01, dann soll was anderes passieren, als im obigen beispiel. wahrscheinlich muss ich doch jetzt ne zweite variable erstellen, den ersten Wert (Z42) hineinschreiben und im nächsten durchlauf überprüfen, ob beide Werte (Z42 udn Z01) vorhanden sind und dann mache dies und das... ist das so richtig??
Ich hab es leider bisher nicht hinbekommen, da ich denke, dass der erste Wert (Z42) verloren gegangen ist und nur noch Z01 im speicher ist. Kann das sein??
Das wäre meine erweiterte Methode:

is
    i : integer;
    name, k : string;

do
    for i := 1 to 137 loop
        name := to_str(i);
name := sprint("Code", copy("00",1,3-strlen(name)), name);
        print @.holeAttribut(name);
if @.holeAttribut(name) = "Z42" then
                      k:="Z42";
end;
                if @.holeAttribut(name) = "Z01" and K="Z42" then
                @.umlagern(Rolle2);
                else
                    @.umlagern(Rolle1);
                end;
    next;
end;

Über Hilfe und Tipps wäre ich sehr dankbar...#
Gruß Buexxxe

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Buexxxe
Mitglied
Student

Sehen Sie sich das Profil von Buexxxe an!   Senden Sie eine Private Message an Buexxxe  Schreiben Sie einen Gästebucheintrag für Buexxxe

Beiträge: 9
Registriert: 03.12.2008

erstellt am: 06. Mrz. 2009 08:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Soweit so gut.... Habs jetzt einigermassen hinbekommen.
Allerdings hab ich jetzt ein neues (hoffentlich triviales) Problem.
Beim Durchlaufen der COde geht Plant Simulation alphabetisch vor, was ja auch Sinn macht. Nur das Problem ist, wenn ich z.B. einen Wert "abc" und "def" habe, aber möchte das erst "def" ausgeführt wird und dann "abc", wird trotzdem erst "abc" ausgeführt, weil Plant Sim. ja den String "abc" als erstes sieht. Wie kann ich das umgehen?? Rausnehemen kann ich die Abfrage nicht, weil falls "def" nicht vorhanden ist, könnte ja "abc" ausgelöst werden, falls vorhanden.
Sollte ich innerhalb einer Methode vielleicht zwei Schleifen einfügen, so wie hier:
is
    i : integer;
    name, k : string;

do
    for i := 1 to 137 loop   
        name := to_str(i);  
name := sprint("Code", copy("00",1,3-strlen(name)), name);
if @.holeAttribut(name) = "DEF" then
@.umlagern(DEF);
elseif @.holeAttribut(name) = "GHI" then
@.umlagern(GHI);
end;       
next;

for i := 1 to 137 loop   
name := to_str(i);  
name := sprint("Code", copy("00",1,3-strlen(name)), name);
         
if @.holeAttribut(name) = "ABC" then
k:="ABC";
end;       
    if @.holeAttribut(name) = "ACC" and k="ABC" then
    @.umlagern(ACC);
elseif k = "ACC" then
@.umlagern(ABC);
  end;
next;
end;

Trotzdem wird in der ersten Schleife das umlagern nicht ausgelöst, wenn in den Attributen "ABC" vorhanden ist!?!?
Kann man so ne Art "Prio" setzen oder so??
Vielleicht ist es sehr trivial, aber ich hab das Gefühl ich seh den Wald vor lauter Bäumen nicht.
Besten Dank schon einmal im Voraus...
MfG

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Buexxxe
Mitglied
Student

Sehen Sie sich das Profil von Buexxxe an!   Senden Sie eine Private Message an Buexxxe  Schreiben Sie einen Gästebucheintrag für Buexxxe

Beiträge: 9
Registriert: 03.12.2008

erstellt am: 06. Mrz. 2009 10:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

jau, jetzt hab ichs 
habe einfach zwei verschiedene Lauf-Indizes (i und j) benutzt, dann klappts!!!
Besten Dank trotzdem nochmal für Eure Unterstützung und Tipps... werde bestimmt noch mal Einige brauchen.
Bis dann
Gruß Buexxxe 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz