Step 7 Dynamisierung von Datenbankzugriffe

jensenwb

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ich möchte gerne folgendes dynamisieren, es soll dabei immer die Zahl 82 durch eine andere Zahl ersetzt werden

Ich muss das bei ca 300 Datenplätzen machen und würde dann die CPU sprengen

Code:
// Überprüfe ob richtiger Datenplatz 
      U(    
      L     "Panel_Daten_1".Quelle_Platznummer
      L     82
      ==I   
      )     
      SPBN  m082

// Wenn Neuer Daten geschrieben werden sollen dann springe weiter nach L...
      U(    
      U     "Panel_Daten_1".Daten_Einfuegen
      U     "Betriebsarten".Sektion_5.BA_Hand
      )     
      SPB   L082


// Aktuelle Daten fürs Panel kopieren      

      CALL  "BLKMOV"
       SRCBLK :="DB_CC_Dat".PDat[82].Visu.LID
       RET_VAL:=#Platz_82
       DSTBLK :="Panel_Daten_1".LidNummer

      CALL  "BLKMOV"
       SRCBLK :="DB_CC_Dat".PDat[82].Visu.Quelle
       RET_VAL:=#Platz_82
       DSTBLK :="Panel_Daten_1".Quelle_LID

      CALL  "BLKMOV"
       SRCBLK :="DB_CC_Dat".PDat[82].Visu.Ziel
       RET_VAL:=#Platz_82
       DSTBLK :="Panel_Daten_1".Ziel_LID




// Aktuelle Daten löschen 
      U(    
      U     "Panel_Daten_1".Daten_Loeschen
      U     "Betriebsarten".Sektion_5.BA_Hand
      )     
      SPBN  m082

      L     32
      T     "DB_CC_Dat".PDat[82].Visu.LID[1]
      T     "DB_CC_Dat".PDat[82].Visu.LID[2]
      T     "DB_CC_Dat".PDat[82].Visu.LID[3]
      T     "DB_CC_Dat".PDat[82].Visu.LID[4]
      T     "DB_CC_Dat".PDat[82].Visu.LID[5]
      T     "DB_CC_Dat".PDat[82].Visu.LID[6]
      T     "DB_CC_Dat".PDat[82].Visu.LID[7]
      T     "DB_CC_Dat".PDat[82].Visu.LID[8]
      T     "DB_CC_Dat".PDat[82].Visu.LID[9]
      T     "DB_CC_Dat".PDat[82].Visu.LID[10]
      T     "DB_CC_Dat".PDat[82].Visu.LID[11]
      T     "DB_CC_Dat".PDat[82].Visu.LID[12]
      T     "DB_CC_Dat".PDat[82].Visu.Quelle[1]
      T     "DB_CC_Dat".PDat[82].Visu.Quelle[2]
      T     "DB_CC_Dat".PDat[82].Visu.Quelle[3]
      T     "DB_CC_Dat".PDat[82].Visu.Ziel[1]
      T     "DB_CC_Dat".PDat[82].Visu.Ziel[2]
      T     "DB_CC_Dat".PDat[82].Visu.Ziel[3]
      T     "DB_CC_Dat".PDat[82].Visu.PalTyp[1]
      T     "DB_CC_Dat".PDat[82].Visu.PalTyp[2]

// Neue Daten einfügen
L082: NOP   0
      U(    
      U     "Panel_Daten_1".Daten_Speichern
      U     "Betriebsarten".Sektion_5.BA_Hand
      )     
      SPBN  m082

      CALL  "BLKMOV"
       SRCBLK :="Panel_Daten_1".LidNummer
       RET_VAL:=#Platz_82
       DSTBLK :="DB_CC_Dat".PDat[82].Visu.LID

      CALL  "BLKMOV"
       SRCBLK :="Panel_Daten_1".Quelle_LID
       RET_VAL:=#Platz_82
       DSTBLK :="DB_CC_Dat".PDat[82].Visu.Quelle

      CALL  "BLKMOV"
       SRCBLK :="Panel_Daten_1".Ziel_LID
       RET_VAL:=#Platz_82
       DSTBLK :="DB_CC_Dat".PDat[82].Visu.Ziel

      L     48
      T     "DB_CC_Dat".PDat[82].Visu.PalTyp[1]
      L     49
      T     "DB_CC_Dat".PDat[82].Visu.PalTyp[2]

      R     "Panel_Daten_1".Daten_Einfuegen




m082: NOP   0

Also z.Bsp: "DB_CC_Dat".PDat[82].Visu.PalTyp[2] durch "DB_CC_Dat".PDat[83].Visu.PalTyp[2]

wie kann ich das realisieren???
 
Eigentlich schreit so eine Aufgabe nach SCL.

Wenn du es trotzdem in AWL machen willst, dann musst du dir für SRCBLK einen Any-Pointer "bauen".
Mit der Suchfunktion findest du hier im Forum genügend Beispiel.

Gruß
Dieter
 
Zurück
Oben