In unserer Datenbank führen wir gewisse Daten als ByteArray in Datenbank.
Ich benötige nur das erste Element dieses Arrays welches ein char darstellt.
Wenn ich versuche das Element wie folgt zu lesen:
Left$(MeinFeld,1)
erhalte ich folgende Meldung im Logfile
Left$(MeinFeld,1)
*Argumentfehler: falscher Datentyp bei ‘Left$’ (erwartet: Zeichenkette, ist: Bild)
Diese Spalte wird als BIld erkannt, dies ist in diesem Fall jedoch falsch.
Ich verwende den DbCommandSetDataProvider
und frage die Tabellen immer mit SELECT * FROM X ab.
Es besteh daher keine Möglichkeit, den Wert vorgängig zu formatieren.
Ich würde mal beim Debugging unter den Exception Settings die First Chance CLR Exceptions aktivieren. Dann solltest du sehen, wo die Exception ausgelöst wird.
Ansonsten könntest du auch im AutoDefineField-Event die Anmeldung des Bildes unterdrücken und stattdessen nur den ersten Buchstaben / das erste Byte als Inhalt übergeben.
Vielen Dank für die Antwort. Zuerst einmal, das mit dem endlosen Rendering hatte einen anderen Grund, jemand in den Sommerferien Tausende Datensätze importiert und darum dauert die Anzeige so lange.
Der Fehler wird im Debug Fenster ausgegeben und ist insofern nur ein stiller Fehler.
die Länge des Array ist 1 und kann nicht in eine Image konvertiert.
daher die Exception in System.Drawing
Wir dann aber im Catch abgefangen und korrekt als string zurückgegeben
dies funktioniert dann soweit korrekt in der designerFunction erhalte ich einen string als Parameter und kann problemfrei auswerten.
Aber im Designer selbst kann ich keine String-Operationen auf den Wert ausführen und erhalte die obengenannte Meldung .
Wie müsste dies mit der Anmeldung aussehen und wo kann ich mehr darüber erfahren, ich würde dies gerne ausprobieren und versuchen ob ich dynamisch auf den finalen gewünschten Wert (bool in diesem Fall) auflösen kann?
Im AutoDefineField-Event kommt jedes Feld mit Namen, Inhalt und Feldtyp vorbei. Da kannst du z. B. den Feldtyp auf Text ändern und ggf. auch nur das erste Zeichen übergeben.