Hallo allerseits!
Ich habe mal weider ein Problem, diesmal aber nicht ganz trivial (zumindest aus meiner Sicht).
DB elphi Ent.5, Interbase,db derzeit noch in Dialect 1
Das Objekt Laborprofil besteht aus IDNR_LABORDEFPROFIL, IDNR_LABORPROFIL
IDNR_LABORTYP
Das Objekt LaborAnfDef besteht aus IDNR_LABORANFDEF, IDNR_LABORANF, IDNR_LABORTYP, WERT
Das Objekt LaborAnf besteht aus IDNR_LABORANF, OK, IDNR_AUFTR, IDNR_PAT
IDNR_HAUPTBUCH, IDNR_LABORANFTYP, IDNR_ABTEILUNGEN, IDNR_KONTEN, PREIS, VONDATUM, FUERDATUM
Eine Labor-Anforderung ist definiert durch
1 Tupel in LaborAnf + n-Tupel in LaborAnfDef.
Der Grund sind extrem variable Mengen von Einzelwerten (5-50 Stk) pro Patient pro Tag pro Labor-Anforderung.
Um nicht bei Standard-Kombinationen oder Aufnahme-Routinen ellenlange Click.-Orgien abzufeiern, gibt es die Möglichkeit vordefinierte Mengen über Laborprofil der Tabelle LaborAnfDef zuzuweisen.
Ich möchte das Fat-Server-Prinzip verwirklichen. Die Idnr’n werden für die einzelnen Objekte in stored proc generiert. Wie kann ich mittels einer Stored proc. jetzt die Werte
Laborprofil. IDNR_LABORTYP, LaborAnf. IDNR_LABORANF in LaborAnfDef bekommen.
Die Menge zu kopierender Datensätze ist
SELECT from LaborProfil where LaborProfil.IDNR_LABORPROFIL = ÜbergabeParameter.
Die InsertMenge ist
INSERT into LaborAnfDef (IDNR_LABORANFDEF, IDNR_LABORANF, IDNR_LABORTYP, WERT) values(gen_id(gen_idnr_laboranfdef,1), : LaborAnf_IDNR_LABORANF , :LaborProfil_IDNR_LABORTYP,0);
Die Clientseitige-Lösung sind nur ein paar Programm-Zeilen, aber bei zunehmender Datenmenge auf Dauer zu langsam, zumal eine Prüfung auf Doppeleingaben erforderlich ist. Diese werden bei der derzeitigen Lösung einfach ignoriert. Dies soll auch so bleiben, weil Profile aus praktischen Gründen Überschneidungen haben dürfen.
Ein Ansatz müsste sein mit einem Cursor zu arbeiten. Leider finde ich dazu zu wenige Beispiele. (Kosch, Interbase...,S284)
Für Hilfe wäre ich dankbar.
Ich habe mal weider ein Problem, diesmal aber nicht ganz trivial (zumindest aus meiner Sicht).
DB elphi Ent.5, Interbase,db derzeit noch in Dialect 1
Das Objekt Laborprofil besteht aus IDNR_LABORDEFPROFIL, IDNR_LABORPROFIL
IDNR_LABORTYP
Das Objekt LaborAnfDef besteht aus IDNR_LABORANFDEF, IDNR_LABORANF, IDNR_LABORTYP, WERT
Das Objekt LaborAnf besteht aus IDNR_LABORANF, OK, IDNR_AUFTR, IDNR_PAT
IDNR_HAUPTBUCH, IDNR_LABORANFTYP, IDNR_ABTEILUNGEN, IDNR_KONTEN, PREIS, VONDATUM, FUERDATUM
Eine Labor-Anforderung ist definiert durch
1 Tupel in LaborAnf + n-Tupel in LaborAnfDef.
Der Grund sind extrem variable Mengen von Einzelwerten (5-50 Stk) pro Patient pro Tag pro Labor-Anforderung.
Um nicht bei Standard-Kombinationen oder Aufnahme-Routinen ellenlange Click.-Orgien abzufeiern, gibt es die Möglichkeit vordefinierte Mengen über Laborprofil der Tabelle LaborAnfDef zuzuweisen.
Ich möchte das Fat-Server-Prinzip verwirklichen. Die Idnr’n werden für die einzelnen Objekte in stored proc generiert. Wie kann ich mittels einer Stored proc. jetzt die Werte
Laborprofil. IDNR_LABORTYP, LaborAnf. IDNR_LABORANF in LaborAnfDef bekommen.
Die Menge zu kopierender Datensätze ist
SELECT from LaborProfil where LaborProfil.IDNR_LABORPROFIL = ÜbergabeParameter.
Die InsertMenge ist
INSERT into LaborAnfDef (IDNR_LABORANFDEF, IDNR_LABORANF, IDNR_LABORTYP, WERT) values(gen_id(gen_idnr_laboranfdef,1), : LaborAnf_IDNR_LABORANF , :LaborProfil_IDNR_LABORTYP,0);
Die Clientseitige-Lösung sind nur ein paar Programm-Zeilen, aber bei zunehmender Datenmenge auf Dauer zu langsam, zumal eine Prüfung auf Doppeleingaben erforderlich ist. Diese werden bei der derzeitigen Lösung einfach ignoriert. Dies soll auch so bleiben, weil Profile aus praktischen Gründen Überschneidungen haben dürfen.
Ein Ansatz müsste sein mit einem Cursor zu arbeiten. Leider finde ich dazu zu wenige Beispiele. (Kosch, Interbase...,S284)
Für Hilfe wäre ich dankbar.
Comment