OBS/Makros und Scripting/Benutzerdefinierte Datenbanktabellen: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Follicular unit transplant (FUT) is the conventional hair transplant method which requires extracting a linear strip of hair bearing skin from the back or the…“)
 
KKeine Bearbeitungszusammenfassung
 
(7 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Follicular unit transplant (FUT) is the conventional hair transplant method which requires extracting a linear strip of hair bearing skin from the back or the side of the scalp. Easily compare tier status for drugs in the exact same class when thinking of an alternative drug for your patient. Undesirable hair [https://soundcloud.com/search/sounds?q=transplantation&filter.license=to_modify_commercially transplantation] final results can generally be dramatically improved by working with a quantity of reparative approaches.<br><br>When performed appropriately, the benefits of hair transplantation are virtually undetectable. To this day, hair transplantation remains the treatment of selection for most patients with hair loss. It would be wrong to think about an FUE transplant solves all one's hair woes for good.<br><br>In 2002, Dr. Bolton co-developed Multi-Unit Hair Grafting for PAI Medical Group in his Tennessee office which is a strategy that combines these exceptional graft sizes for the ideal all-natural looking results. CIT® is Dr. John P. Cole's proprietary hair transplant strategy. The ARTAS® Robotic Hair Transplant gives you fuller, younger-looking hair while eliminating the drawbacks normally connected with older transplant procedures.<br><br>The expense of hair transplantation can differ significantly from one particular clinic to a different. Welcome to Organic Hair Transplant Health-related Center. Hair transplantation surgery is an operation to replace or restore one's lost hair and hairline.<br><br>We have all the data you will need about public and private hair loss clinics that deliver hair transplant in Turkey. In our hair restoration clinic, we supply intravenous and oral sedation to sufferers so they may perhaps be sleepy or unaware via a great portion of the procedure. Many clinics execute follicular unit hair transplants under neighborhood anesthesia only.<br><br>As a single of the few fellowship educated hair transplant surgeons in the nation Dr. Fallon has spent years refining his craft so he can provide his patients the most all-natural final results achievable. We're an skilled hair transplantation group with more than 9 years and 1000's of [http://zhyanw.com/comment/html/index.php?page=1&id=20832 non surgical hair transplant] hair restoration procedures behind us. During this time, our group has helped hundreds of foreign sufferers from around the planet to get their hair back. Ask the professionals and talk about your hair restoration objectives with the worlds leading hair transplant clinic in the following cities.<br><br>Our physicians routinely transplant extra grafts in a single session than any other hair restoration clinic, giving the patient with greater value compared to other clinics that call for two or 3 sessions to attain similar benefits. The Medical doctors and their group are world-renown as leaders in hair transplants and pioneered advances in hair restoration techniques practices. Dr. Victor Hasson and Dr. Jerry Wong have been practicing aesthetic hair transplant surgery in Vancouver for practically 20 years.<br><br>For a hair transplant to be thriving, enough hair ought to be readily available to be ‘donated' from an additional element of the scalp or physique. At The Private Clinic, we also perform hair restoration on the face, which includes on the beard, moustache and eyebrows , and are able to perform some hair transplants applying physique hair. Dr. Tetiana Mamontova is an esteemed hair transplant surgeon and member of the British Medical Association who is specialised in a range of FUE transplants such as those to the head, and FUE surgery for the concealment of scars.<br><br>Having said that, we offer hair transplant consultations across the UK. He is responsible for designing, testing and building a robotic technique to help in the single hair extraction method employed in hair transplant procedures… In short, his invention revolutionized hair transplantation as it is performed right now. NHI technologies has been licensed for use in the ARTAS® Robotic Hair Transplant System to offer a minimally invasive hair loss restoration procedure.<br><br>As more and much more people today are opting for a hair transplant at the HLC (Hairline Clinic) Hair Transplant Center in Istanbul and Ankara - Turkey we kindly invite everybody to get a closer look into our services. The HLC Hairline Clinic is focusing on healthcare hair transplant only. Successful hair transplants are characterized by natural outcomes and aesthetically pleasing benefits on sufferers.<br><br>As getting personally introduced and very trained by Dr. Özgür himself every hair surgeon and medical professional of the HLC Hair Transplant Center Turkey ( Dr. Özgür and his physician team Dr. Akin, Dr. Kaan and Dr. Ali ) has accomplished a higher level of understanding, excellency, skillfulness and knowledge to meet the expectations of each the sufferers and the ISHRS.
{{Makros und Scripting}}
Diese Seite erklärt die User-Dateien für unsere Datenbankstrukturdefinition.
=Allgemeines=
==Wie merkt OBS sich die Strukturdefinition?==
OBS verwendet dazu die Klasse '''TxDBStructures'''. Für diese Klasse gibt es ein globales Objekt, für welches in jeder laufenden Exe eine Instanz, die beim Programmstart erzeugt wird, gibt. Pro Kombination aus Struktur-Dateien gibt es einen Eintrag im internen Array (Array of '''TDB_Structure''') mit Namen und MD5-Werten der Datei sowie den Tabellendefinitionen und Flags (ebenfalls Arrays). Das ganze findet sich in der Unit '''Base.xDBStructure'''.
==Wie nutzt OBS die Strukturdefinition?==
Beim Anlegen einer neuen Instanz von '''TxDB''' wird sofern gesetzt die Struktur eingelesen. In der Klassen-Definition von '''TxDB''' ('''Base.xDatabase''') finden sich die beiden Variablen '''cStructFile''' und '''cStructFileUser''', in denen für jeden DB-Connect die zu verwendenen Struktur-Dateien stehen. Diese werden dann beim Laden mit der Klassenfunktion '''LoadDBStructure''' and die '''Add'''-Funktion der Struktur-Klasse übergeben. Das DB-Connect erhält dafür dann den Index zurück, über den der richtige Eintrag im Array der Struktur-Instanz referenziert wird.<br />
An diversen Stellen wird so über das DB-Connect ermittelt bzw. kann ermittelt werden, ob in der Connection bestimmte Felder oder Tabellen überhaupt vorhanden sind.
 
==Wann wird die Datei beim Programmstart benötigt?==
Die Einbindung der benutzerspezifischen Datenbankfelder findet in der Funktion '''DB_ConnectToDatabase''' statt. Der grobe Ablauf in '''DB_ConnectToDatabase''' ist wie folgt:
#TxDB Instanz erstellen oder zurücksetzen
#Verbindung zur Datenbank aufbauen{{Achtung|Wenn Verbindung erfolgreich, dann weiter mit nächsten Schritt, sonst weiter zu 6}}
#Auslesen der Connection-ID
#Ermitteln der Struktur-Dateien (bei aktiver Compiler-Direktive OBS_oMyDBC)
##Pointer prüfen
##Tabelle PMODE prüfen
##Kundennummer aus PMode 996 auslesen
##Dateiname setzen (USER_<''Kundennummer''>_OBSDB.SYS)
#Struktur laden
#Rückgabe boolsches Ergebnis, ob Connect erfolgreich
==Wann und wie wird die User-Datei gelesen?==
Gelesen wird die Datei, wenn die '''Add'''-Funktion der Klasse '''TxDBStructures''' aufgerufen wird. Innerhalb von OBS passiert dies über das DB-Connect (TxDB.LoadDBStructure). Zunächst wird immer der aktuelle MD5-Wert der Datei ermittelt. Ist dieser Wert abweichend vom letzten Import, wird die gemerkte Struktur zurückgesetzt und die Dateien neu eingelesen. Dabei werden die angegebenen Dateien in eine StringList geladen und Zeilen für Zeile abgearbeitet.
 
=SYS-Datei=
Die Definition ist identisch zur OBSDB.SYS. Es können komplette eigene Tabellen definiert oder Standard-Tabellen um eigene Felder erweitert werden. Auch eigene Indizes sind möglich. Beim Hinzufügen von Feldern zu den Standard-Tabellen ist es nicht nötig, die Definition der Tabelle zu kopieren. Es muss nur enthalten sein, was dazu kommen soll.<br />
<br />
{{Achtung|Felder, die zu bereits bestehenden OBS-Tabellen hinzugefügt werden, müssen mit USER_ beginnen! Dadurch werden Fehler vermieden, falls ein Feld mit dem gewünschten Namen in Zukunft in den Standard aufgenommen werden sollte.}}
 
 
Beispiel PERSSTA:
<syntaxhighlight lang="Delphi">
 
*-------------------------------------------------------------------------------
#DBNAME PERSSTA
#TITEL  (Hinzufügen von Feldern in vorhandenen Tabellen)
  #FELDNAME USER_PS_NOTIZEN            , M  ,2000 , 0 , "*" , LIKESUCHE
 
#DBNAME USER_TISCHE
#TITEL  (Hinzufügen von Feldern in neuen Tabellen)
 
  #FELDNAME UT_NR                , C  ,    8 , 0 , "CCCCCCCC"
  #FELDNAME UT_NAME              , C  ,  50 , 0 , "*"
  #FELDNAME UT_BESCHREIBUNG      , M  , 2000 , 0 , "*"
  #FELDNAME UT_SACHBEARBEITER    , C  ,    2 , 0 , "CC"
  #FELDNAME SYS_UID              , C  ,  10 , 0 , "CCCCCCCCCC"
  #FELDNAME SYS_DATE              , D  ,    4 , 0 , "TT.MM.JJ" , AUTODATE
 
  #XINDEX USER_TISCHE01 SYS_UID
  #XINDEX USER_TISCHE02 UT_NR
 
*-------------------------------------------------------------------------------
</syntaxhighlight>
In diesem Beispiel wir der Tabelle PERSSTA das Feld USER_PS_NOTIZEN hinzugefügt. Platzhalter und Flags können wie auch in der OBSDB.SYS verwendet werden.

Aktuelle Version vom 23. Dezember 2019, 10:16 Uhr


Diese Seite erklärt die User-Dateien für unsere Datenbankstrukturdefinition.

Allgemeines

Wie merkt OBS sich die Strukturdefinition?

OBS verwendet dazu die Klasse TxDBStructures. Für diese Klasse gibt es ein globales Objekt, für welches in jeder laufenden Exe eine Instanz, die beim Programmstart erzeugt wird, gibt. Pro Kombination aus Struktur-Dateien gibt es einen Eintrag im internen Array (Array of TDB_Structure) mit Namen und MD5-Werten der Datei sowie den Tabellendefinitionen und Flags (ebenfalls Arrays). Das ganze findet sich in der Unit Base.xDBStructure.

Wie nutzt OBS die Strukturdefinition?

Beim Anlegen einer neuen Instanz von TxDB wird sofern gesetzt die Struktur eingelesen. In der Klassen-Definition von TxDB (Base.xDatabase) finden sich die beiden Variablen cStructFile und cStructFileUser, in denen für jeden DB-Connect die zu verwendenen Struktur-Dateien stehen. Diese werden dann beim Laden mit der Klassenfunktion LoadDBStructure and die Add-Funktion der Struktur-Klasse übergeben. Das DB-Connect erhält dafür dann den Index zurück, über den der richtige Eintrag im Array der Struktur-Instanz referenziert wird.
An diversen Stellen wird so über das DB-Connect ermittelt bzw. kann ermittelt werden, ob in der Connection bestimmte Felder oder Tabellen überhaupt vorhanden sind.

Wann wird die Datei beim Programmstart benötigt?

Die Einbindung der benutzerspezifischen Datenbankfelder findet in der Funktion DB_ConnectToDatabase statt. Der grobe Ablauf in DB_ConnectToDatabase ist wie folgt:

  1. TxDB Instanz erstellen oder zurücksetzen
  2. Verbindung zur Datenbank aufbauen
    ACHTUNG: Wenn Verbindung erfolgreich, dann weiter mit nächsten Schritt, sonst weiter zu 6
  3. Auslesen der Connection-ID
  4. Ermitteln der Struktur-Dateien (bei aktiver Compiler-Direktive OBS_oMyDBC)
    1. Pointer prüfen
    2. Tabelle PMODE prüfen
    3. Kundennummer aus PMode 996 auslesen
    4. Dateiname setzen (USER_<Kundennummer>_OBSDB.SYS)
  5. Struktur laden
  6. Rückgabe boolsches Ergebnis, ob Connect erfolgreich

Wann und wie wird die User-Datei gelesen?

Gelesen wird die Datei, wenn die Add-Funktion der Klasse TxDBStructures aufgerufen wird. Innerhalb von OBS passiert dies über das DB-Connect (TxDB.LoadDBStructure). Zunächst wird immer der aktuelle MD5-Wert der Datei ermittelt. Ist dieser Wert abweichend vom letzten Import, wird die gemerkte Struktur zurückgesetzt und die Dateien neu eingelesen. Dabei werden die angegebenen Dateien in eine StringList geladen und Zeilen für Zeile abgearbeitet.

SYS-Datei

Die Definition ist identisch zur OBSDB.SYS. Es können komplette eigene Tabellen definiert oder Standard-Tabellen um eigene Felder erweitert werden. Auch eigene Indizes sind möglich. Beim Hinzufügen von Feldern zu den Standard-Tabellen ist es nicht nötig, die Definition der Tabelle zu kopieren. Es muss nur enthalten sein, was dazu kommen soll.

ACHTUNG: Felder, die zu bereits bestehenden OBS-Tabellen hinzugefügt werden, müssen mit USER_ beginnen! Dadurch werden Fehler vermieden, falls ein Feld mit dem gewünschten Namen in Zukunft in den Standard aufgenommen werden sollte.


Beispiel PERSSTA:

 *-------------------------------------------------------------------------------
 
 #DBNAME PERSSTA
 #TITEL  (Hinzufügen von Feldern in vorhandenen Tabellen)
 
   #FELDNAME USER_PS_NOTIZEN             , M  ,2000 , 0 , "*" , LIKESUCHE

 #DBNAME USER_TISCHE
 #TITEL  (Hinzufügen von Feldern in neuen Tabellen)

  #FELDNAME UT_NR                 , C  ,    8 , 0 , "CCCCCCCC"
  #FELDNAME UT_NAME               , C  ,   50 , 0 , "*"
  #FELDNAME UT_BESCHREIBUNG       , M  , 2000 , 0 , "*"
  #FELDNAME UT_SACHBEARBEITER     , C  ,    2 , 0 , "CC"
  #FELDNAME SYS_UID               , C  ,   10 , 0 , "CCCCCCCCCC"
  #FELDNAME SYS_DATE              , D  ,    4 , 0 , "TT.MM.JJ" , AUTODATE

  #XINDEX USER_TISCHE01 SYS_UID
  #XINDEX USER_TISCHE02 UT_NR

 *-------------------------------------------------------------------------------

In diesem Beispiel wir der Tabelle PERSSTA das Feld USER_PS_NOTIZEN hinzugefügt. Platzhalter und Flags können wie auch in der OBSDB.SYS verwendet werden.