Sven's CA-Visual Objects - Seite

23.11.2012

eMail

eMail

Übersicht | Vorheriger | Nächster

Datenbanken mit Binärdaten:

Wenn Binärdaten - Daten die alle Werte zwischen 0 und 255 pro Byte enthalten können in Datenbankfelder geschrieben werden müssen, so ist folgendes zu beachten:

  1. Die Datenbank ist vom Typ ANSI, sie wird also nicht von einem DOS-Programm gleichzeitig benutzt. SetAnsi(TRUE) war beim Erstellen gesetzt. Es ist nichts weiter zu beachten, da keine automatischen Konvertierungen von OEM2ANSI oder ANSI2OEM aktiv sind.

  2. Die Datenbank ist vom Typ OEM, sie wird also gleichzeitig mit DOS-Programmen verwendet. SetAnsi(FALSE) war beim Erstellen gesetzt.

    1. Schreiben eines oder mehrerer Felder.

      SetAnsi(FALSE)
      oServer:GoTo(oServer:Recno)
      //Wichtig damit interner Puffer neu eingelesen wird
      oServer:FIELDPUT(#Feld,uValue)
      //Jetzt können beliebig viele Leseoperationen folgen
      oServer:Commit()
      //Das Commit muß auf jedenfall ausgeführt werden bevor SetAnsi wieder auf TRUE gesetzt wird.
      SetAnsi(TRUE)

    2. Lesen eines Feldes:

      SetAnsi(FALSE)
      oServer:GoTo(oServer:Recno)
      //Wichtig damit interner Puffer neu eingelesen wird
      oServer:FIELDGET(#Feld)
      //Jetzt können beliebig viele Leseoperationen folgen
      SetAnsi(TRUE)

  3. Concurrencycontrol sollte in jedem Fall auf CCNONE stehen, da ich nicht weiß wann die internen Buffer geschrieben werden. SetAnsi(FALSE) sollte immer nur kurz für den Zeitpunkt der Lese- bzw. Schreiboperation gesetzt sein, da dies ein globaler Schalter ist und auf alle Datenbankoperationen auch in anderen Fenstern wirkt

 

Home | Kontakt | Impressum | ©2012 Ingenieur-Büro Dipl. Ing. Sven Ebert