Autor Beitrag
rotalosi
Hält's aus hier
Beiträge: 12
Erhaltene Danke: 1



BeitragVerfasst: Di 11.07.17 12:07 
Hallo,

ich habe mal wieder ein kleines Problem.

Ich habe eine MS SQLExpress(2008) Datenbank. Leider gibt es keine Doku zu dieser Datenbank und dem Programm das sie verwendet.
In dieser Datenbank gibt es eine Tabelle mit Werten die ich statistisch auswerten möchte. In dieser Tabelle gibt es zwei BLOB-Felder
die vermutlich die wichtigen Daten (Audiogramme) enthalten. Ich habe keine Ahnung wie die Daten in diesen Feldern gespeichert sind.

Auf die Datenbank greife ich per ADO (Rad Studio 10.1) zu.

Die Abfrage sehen ungefähr so aus: select top 100 [obase].[dbo].[tblAction].* from [obase].[dbo].[tblAction] where DeviceType = 100
Die Felder mit den BLOBs heißen PublicData und PrivateData.

Hat jemand eine Idee wie ich an die Daten komme, sozusagen im RAW Format? Da ich das ursprüngliche Programm noch habe, könnte ich dann durch vergleichen
evtl. auf die Werte schliessen.

Gruß
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: Di 11.07.17 18:18 
Hallo rotalosi... :wink:
Der Datenbank ist es wurscht welche Daten im BLOB Feld stehen. Ob es die Einkaufsliste ist oder das Bild von Miss Juli 89... :zwinker:

Du kannst den Inhalt über einen Stream auslesen und ggf. für den Vergleich oder Analyse speichern. Imho hast du ohne Dokumentation kaum eine Chance... :?
docwiki.embarcadero....Set.CreateBlobStream
Codebeispiel aus dem Netz:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
function GetBlobStream(Query: TADOQuery): TMemoryStream;
begin
  result := TMemoryStream.Create;

  // You must connect to AccessDB first.
  // See: Query.Connection, TADOConection or Query.ConnectString

  // Send SQL command
  Query.Active := False;
  Query.SQL.Clear;
  // data is my row and email the table
  Query.SQL.Append('SELECT data FROM email WHERE id=1');
  Query.Active := True;

  Result.LoadFromStream(Query.CreateBlobStream(Query.FieldByName('Data'), bmRead));
end;


PS: Das ist Code wie es nicht machen sollte... :mahn: