[RTC] Blob Feld Speicherung in SQL verhindern

29. September 2011 15:11

Hallo Zusammen,

Folgendes Problem:

Wir haben eine zentrale Tabelle für Bitmaps (also DataType "BLOB", SubType "Bitmap"), um im RTC etwas "farbe" reinzubringen. Diese Bitmaps werden einmalig in SQL abgelegt. Wenn nun ein Bitmaps in einer anderen Page angezeigt werden soll, dann holen wir das Bitmap aus der Tabelle und laden diese in die Page (mit Clacfields). Da Problem ist nun, falls eine Änderung in dem Datensatz erfolgt, dann wird das Bitmaps als Kopie nochmal in der DB gespeichert.

Im Grunde soll das Bitmap in anderen Pages nur als Anzeige dienen. Funktioniert soweit gut, nur bei Modify werden diese dann mitgespeichert.

Kann man das irgendwie verhindern?


Gruß
Aydin

Re: [RTC] Blob Feld Speicherung in SQL verhindern

29. September 2011 15:16

Ich versteh zwar ehrlich gesagt nicht, was du meinst mit
falls eine Änderung in dem Datensatz erfolgt, dann wird das Bitmaps als Kopie nochmal in der DB gespeichert.
, aber:

Versteh ich dich richtig, ihr arbeitet mit einem Lookup-FlowField?
Dann versucht es doch mit einem NormalField oder Funktion.

Re: [RTC] Blob Feld Speicherung in SQL verhindern

29. September 2011 16:26

Hallo Natalie,

also nochmal:-)

Es gibt eine zentrale Tabelle in der alle Bitmaps gespeichert sind.

Zur Laufzeit holen sich die Pages, die ein Blob Feld besitzen, die entsprechenden Bitmaps (Repearter: da man im RTC nicht viel mit den Farben machen kann).

Das Problem ist sobald ein Modify abgesetzt wird, dann wird das Bitmap wieder in die Datenbank gespeichert (Unnötig weil das Bitmap bereits in der zentralen Tabelle schon vorhanden ist).
Auf Dauer wäre das keine Lösung, das würde den SQL Server unnötig auslasten.

Ziel ist: Blob Feld anzeigen aber nicht wieder in die DB speichern.

Gruß
Aydin

Re: [RTC] Blob Feld Speicherung in SQL verhindern

29. September 2011 17:13

Warum machst du denn ein modify auf der Bitmap- Tabelle

Gruß, Fiddi

Re: [RTC] Blob Feld Speicherung in SQL verhindern

29. September 2011 18:07

Hallo,


in der Bitmap Tabelle wird kein modify gemacht (da wird nix geändert).
Aus der Tabelle holen sich andere Pages die Bitmaps z.B falls ein Wert im negativen Bereich ist (als Bitmap ein Warndreieck von mir aus).
Und wenn der User in diesen Pages was ändert, dann sollen zwar alle Werte in die DB geschrieben werden aber das BlobFeld sollte quasi ignoriert werden.


Hat das eigentlich niemand so realisert?


Gruß
Aydin

Re: [RTC] Blob Feld Speicherung in SQL verhindern

29. September 2011 22:52

Aydin,

da ihr die Tabelle in der die Bitmaps angezeigt werden eh schon um Blob-Felder angereichert habt, was hält euch davon ab, im Zuge dieser Änderung auch gleich die Felder per CLEAR() im OnModify() Trigger zu bearbeiten? Gern auch mir einem Blob.HASVALUE davor...

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 07:47

Hallo,

wenn ich dich jetzt richtig verstanden habe, dann habt ihr in eurer Tabelle, die in der Page eigentlich angezeigt wird ein BLOB- Feld eingebaut, das mit der Bitmap aus der Bitmap-Tabelle zur Anzeige gefüllt wird.

Wenn dem so ist, spare dir das Feld in der Tabelle der Page, und mach im OnAfterGetRecord der Page ein Get auf die Bitmaptabelle, und Calcfields auf die Bitmap. In der Page gibst du jetzt das Feld aus der Bitmap-Tabelle als SourceExpression an, also z.B. Bitmap.Picture, und setzt das Feld in der Page auf nicht editierbar. (in der Form funktioniert das so, sollte eigentlich auch in der Page funktionieren :mrgreen: )

Gruß, Fiddi

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 08:50

Ich bin nicht sicher fiddi, aber ich glaube genau das könnte ein Problem sein :)

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 09:11

Ich denke das er es lt. dieser Anleitung realisiert hat.

Und wenn jetzt in der aktuellen Tabelle ein Modify geschieht, dann wird das Bild mitgespeichert.

Ich denke die Lösung wäre, vor dem Modify das Bitmap Feld zu leeren.(im OnModify Trigger der Tabelle)

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 09:30

m_schneider hat geschrieben:Ich denke das er es lt. dieser Anleitung realisiert hat.

Und wenn jetzt in der aktuellen Tabelle ein Modify geschieht, dann wird das Bild mitgespeichert.

Ich denke die Lösung wäre, vor dem Modify das Bitmap Feld zu leeren.(im OnModify Trigger der Tabelle)


Genau das meinte ich. Die Anleitung ist mir bereits bekannt, nur die Ausführung stimmt nicht ganz bei uns.

Also wenn wir im OnModify den Clear Befehl aufrufen, dann wird das Bitmap aber in der Page nicht mehr angezeigt, obwohl das Bitmap im OnAftergetRecord neu geladen wird. Ist da ein Denkfehler?
Oder wir haben die richtige Stelle nicht getroffen:-(

Gruß
Aydin

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 09:55

aydina81 hat geschrieben:...
Also wenn wir im OnModify den Clear Befehl aufrufen, dann wird das Bitmap aber in der Page nicht mehr angezeigt, obwohl das Bitmap im OnAftergetRecord neu geladen wird. Ist da ein Denkfehler?
Oder wir haben die richtige Stelle nicht getroffen:-(
...

Ich meinte den OnModifyTrigger der Tabelle nicht den der Page.

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 10:08

Hallo,

ich habs noch mal getestet, Carsten hat teilweise Recht. Mit dem Standard geht es tatsächlich nicht, aber mit dem kleinen Tool von Kine geht es dann doch recht einfach.
Wenn man das Controladdin installiert hat, und dem Bild- Control als 'Controladdin" das "NAVERTICA.DynamicsNAV.UniWPFAddin" zugewiesen hat, funktioniert meine Methode aus den Forms wieder. (Frag mich nicht warum :shock: )

Gruß, Fiddi

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 10:17

Hallo,


aber ein Add-In in Repeatern? Das funktioniert leider nicht:-(

Eigentlich muss man nach dem Modify (also wenn die Änderungen in DB geschrieben wird) sagen, dass die Page sich aktualisiert.
Weil die Funktion "LoadBitmap()" im OnAfterGetRecord stattfindet.

Gruß
Aydin

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 10:24

aber ein Add-In in Repeatern? Das funktioniert leider nicht:-(


habe es getestet in Page 46 Sales Order Subform, und zwar im Repeater mit Build 32690 :wink:

Gruß, Fiddi

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 11:03

Aha das wäre mir neu:-)

Aber wäre trotzdem schön, wenn die oben beschriebene Anforderung klappen würde, dann müsste man kein Add-In reg. (und diese dann immer pflegen), abgesehen davon dass man noch den Client aktualisieren muss.

Aber vielleicht kennt jemand die Lösung?


Gruß
Aydin

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 13:01

Kann man das ganze nicht ohne Tabellenfeld lösen? Also quasi wie in der Form, eine Spalte ohne bezug zu einem Feld und dass dann individuell "befüllen". Dann ist das Modify kein Problem.

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 13:25

Hallo Jan,

es gibt keine (gloable) Variable vom Typ Blob. Bis jetzt habe wir keine andere Möglichkeit gefunden, außer Blob Felder in den Tabellen zu bauen und die Bitmaps zu laden (also von Tabelle zu Tabelle:-)).

http://blogs.msdn.com/b/cabeln/archive/ ... d-ins.aspx


Gruß
Aydin

Re: [RTC] Blob Feld Speicherung in SQL verhindern

30. September 2011 13:27

Kann man das ganze nicht ohne Tabellenfeld lösen? Also quasi wie in der Form, eine Spalte ohne bezug zu einem Feld und dass dann individuell "befüllen". Dann ist das Modify kein Problem.


siehe hier, hier und hier :mrgreen:

Gruß, Fiddi