Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 29

Thema: Werte in DB vergleichen und wegspeichern

  1. #1
    Registriert seit
    01.02.2010
    Beiträge
    345
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Ihr,

    ich brauche bitte etwas Unterstützung.

    In einem DB12 ist ein ARRAY [1..50] mit Namen Messwerte angelegt. Innerhalb des Arrays befindet sich ein STRUCT mit Wert1 bis Wert12.

    Nun soll über ein Hilfsprogramm aus jedem Array der Wert1 auf den Eintrag 33 überprüft werden.


    Bis hierher hätte ich folgenden Vorschlag:


    FOR Count := 1 TO 50 BY 1 DO

    IF DB12.Messwerte[Count].Wert1 = 33 THEN

    .
    .
    .

    END_IF;

    END_FOR;


    Das Problem ist nun, wie könnte ich es bewerkstelligen, dass von den durchsuchten Werten (also jeweils Wert1) mit dem Eintrag 33 die Adresse in einem separaten DB aufgelistet wird?


    Lieben Dank für einen Vorschlag!
    Grüße
    anne
    Zitieren Zitieren Werte in DB vergleichen und wegspeichern  

  2. #2
    anne ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.02.2010
    Beiträge
    345
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hi,

    bin evtl. noch ein kleines Stückchen weitergekommen... mein Code sieht nun wie folgt aus:

    adr := -1; // Eintrag, wenn nichts gefunden wurde

    FOR Count := 1 TO 50 BY 1 DO

    IF DB12.Messwerte[Count].Wert1 = 33 THEN

    adr := Count;
    EXIT;

    END_IF;

    END_FOR;


    Nun besteht noch das Problem, dass nur der erste gefundene Wert 33 weggespeichert wird. Kann ich das umbauen, dass alle gefundenen Werte weggespeichert werden?

    Danke.
    Grüße
    anne

  3. #3
    Registriert seit
    23.05.2008
    Beiträge
    131
    Danke
    59
    Erhielt 11 Danke für 10 Beiträge

    Standard

    hi,

    adr als array mit der gleichen größe definieren (u.U. kann ja in allen der suchwert stehen), zähler auf eins initialisieren und um eins hochzählen wenn du den suchwert (hier 33) gefunden hast.

    mfg

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.720
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Vielleicht so :
    Code:
    id adr = -1 then adr := count ; end_if ;

  5. #5
    anne ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.02.2010
    Beiträge
    345
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Vielleicht so :
    Code:
    id adr = -1 then adr := count ; end_if ;
    Danke für die Antworten!

    @LL:
    Das verstehe ich leider nicht...
    In meinem Code steht ja unter "adr" dann die Zählernummer, bei der der Wert 33 gefunden wurde. Der Wert 33 kann mehrmals im DB vorkommen!

    "adr" ist ja nur dann -1, wenn Nichts gefunden wurde.
    Geändert von anne (27.06.2012 um 12:18 Uhr)
    Grüße
    anne

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.720
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    @Anne:
    Genau ... und nur wenn bislang nichts gefunden wurde soll ja auch der Wert in die Liste - so hatte ich es jedenfalls verstanden, da du ja das erste Auftauchen der 33 wissen wolltest.
    Aber vielleicht wäre es ja auch besser gewesen, es als vollständigen Code zu posten - also so :
    Code:
    adr := -1;      // Eintrag, wenn nichts gefunden wurde
    
    FOR Count := 1 TO 50 BY 1 DO
          IF DB12.Messwerte[Count].Wert1 = 33 THEN
              if adr = -1 then adr := count ; end_if ;
         END_IF;
    
    END_FOR;
    ... oder wolltest du etwas anderes ?

    Gruß
    Larry

  7. #7
    anne ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.02.2010
    Beiträge
    345
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hm, also evtl. habe ich mich etwas unklar ausgedrückt.

    Es kann vorkommen, dass in besagtem DB z.B. 4x der Wert 33 vorkommt.

    Dann sollen mit einem Scan (Schleife) die Adressen (also der Wert ganz vorne im DB) weggespeichert werden, an denen der Wert 33 steht.


    Lieben Dank...
    Grüße
    anne

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.720
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    ... da ich jetzt immer noch nicht schlauer bin ...
    Du möchtest also nicht wissen, das die erste 33 im Index 12 steht sondern möchtest wissen, dass im Index 12, 15, 33 und 39 jeweils der Wert 33 eingetragen wurde ?


    Wenn ja, dann war der Hinweis von Testuser im Grunde der richtige Ansatz.
    ...

  9. #9
    anne ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.02.2010
    Beiträge
    345
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Du möchtest also nicht wissen, das die erste 33 im Index 12 steht sondern möchtest wissen, dass im Index 12, 15, 33 und 39 jeweils der Wert 33 eingetragen wurde ?
    ...
    Ja genau, ich möchte alle Adressen wissen, an denen die Zahl 33 eingetragen ist.

    Habe mich schon mit den Ansatz von Testuser beschäftigt - komme aber noch nicht so recht weiter...
    Grüße
    anne

  10. #10
    anne ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.02.2010
    Beiträge
    345
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habe das Ganze jetzt nochmals versucht - habe jetzt zwei DB's.

    Aber ich bekomme einen Bereichslängenfehler und die Sps geht auf Stop!

    Mein Code:

    FOR Count := 1 TO 30 BY 1 DO

    IF DB12.Messwerte[Count].Wert1 = 33 THEN

    DB1.adr[Count] := 33;

    END_IF;

    END_FOR;


    Die beiden DB's:

    DB1.jpgDB2.jpg
    Grüße
    anne

Ähnliche Themen

  1. 3 Werte vergleichen
    Von chipset im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 24.04.2012, 21:19
  2. Antworten: 9
    Letzter Beitrag: 12.04.2012, 22:42
  3. 8 Integer Werte vergleichen
    Von HarryH im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 20.09.2011, 08:00
  4. Antworten: 27
    Letzter Beitrag: 07.04.2011, 22:56
  5. Werte in einem DB suchen und vergleichen
    Von Kodan im Forum Simatic
    Antworten: 48
    Letzter Beitrag: 25.02.2009, 18:06

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •