Конференция "Базы" » Вставка изображения в BLOB поле [D7]
 
  • Evgeney (13.10.10 11:12) [0]
  • Плохиш © (13.10.10 11:55) [1]
    Что в справке не понятно?
  • Evgeney (13.10.10 12:01) [2]
    где в справке? я уже 3 день бьюсь не получается
  • Плохиш © (13.10.10 12:05) [3]
    Пожалуйста

    TBlobField wird für ein Feld in einer Datenmenge verwendet, das eine Referenz auf ein BLOB enthält.

    Unit

    DB

    Beschreibung

    TBlobField kapselt das fundamentale Verhalten von BLOB-Feldern (Binary Large Object). BLOB-Felder sind Datenbankfelder, die binäre Daten in beliebiger Länge enthalten können. BLOB-Feldkomponenten können unterschiedliche Datentypen von beliebiger Länge repräsentieren. Der jeweilige Datentyp wird im Header der binären Daten angegeben.

    Neben den direkt unterstützten Feldtypen ist TBlobField der direkte Vorfahr zweier BLOB-Feldkomponenten: TMemoField (ftMemo) und TGraphicField (ftGraphic). Diese abgeleiteten Klassen werden für BLOB-Felder mit für Memo- bzw. Grafikdaten typischen Headern verwendet.

    TBlobField führt neue Methoden ein, um Daten im BLOB-Feld in einen Stream zu stellen. Außerdem sind Methoden zum Kopieren von Binärdaten zwischen dem BLOB-Feld und einer Binärdatei implementiert. Mit dem von der Methode CreateBlobStream der Datenmenge zurückgegebenen Stream können auch von einem BLOB-Feld verwalteten Daten gelesen oder geschrieben werden.

    Wenn Sie während des Entwurfs mithilfe des Felder-Editors eine persistente Feldkomponente für das BLOB-Feld erstellen, können Sie es zur Laufzeit über seinen Namen ansprechen. Verwenden Sie dynamische Feldomponenten, so haben Sie über die Eigenschaft Fields oder die Methode FieldByName der Datenmenge Zugriff auf die TBlobField-Instanz.


    PS. В описаниях методов даже желаемый код дан.
  • Evgeney (13.10.10 12:19) [4]
    var
     MS: TMemoryStream;
    begin
     if not (ClientDataSet1.State in [dsInsert, dsEdit]) then
       ClientDataSet1.Insert;
     MS := TMemoryStream.Create();
     try
       Image1.Picture.Bitmap.SaveToStream(MS);
       ClientDataSet1Images.LoadFromStream(MS);
     finally
       MS.Free;
     end;
     ClientDataSet1.Post;
    end;



    ошибка ClientDataSet1Images не определен? Что это?
  • Evgeney (13.10.10 12:26) [5]
    ну пасиб и на этом, буду дальше искать... ничего не получилось
  • Плохиш © (13.10.10 12:34) [6]

    > ошибка ClientDataSet1Images не определен? Что это?

    Это говорят, что надо нанять программиста.
  • Evgeney (13.10.10 12:43) [7]
    Блин вот нормально нельзя сказать, сразу программиста...
  • sniknik © (13.10.10 13:01) [8]
    > Блин вот нормально нельзя сказать
    в самой ошибке нормально - не определен. т.е. переменной нет, либо вне области видимости.

    p.s. вообще вопрос "Что это?" после такой ошибки это типа - "говорят 2+2=4, почему?"
    поэтому и "сразу программиста...".
  • Evgeney (13.10.10 13:07) [9]
    пример был взят из хелпа, есть компонент ClientDataSet1 а метод ClientDataSet1Images нигде не описан, если все такие грамотные взяли бы да подсказали...
  • Сергей М. © (13.10.10 13:34) [10]
    > а метод ClientDataSet1Images нигде не описан

    А это не метод.
    Это поле класса формы, на которую ты шлепнул компонент ClientDataSet1
    И появилось это поле услужливыми стараниями IDE, когда в ClientDataSet1 добавили поле Image
  • sniknik © (13.10.10 14:11) [11]
    > если все такие грамотные взяли бы да подсказали...
    в этом и проблема, нечего подсказывать, т.к. это не что-то общеизвестное и проблемное, это твоя некомпетентность, про которую ты умолчал... вот было бы описание, что это пример из хелпа, что ты сделал только копирование, что .... короче все, что делал, вот тогда бы можно было подсказать, что "вот тут" сделано не так, не правильно, надо по другому.
    но у тебя то вопрос в общем, про вставку, там проблем нет, действуешь по хелпу и все работает. проблема в твоей интерпретации.

    > И появилось это поле услужливыми стараниями IDE
    вернее, не появилось... судя по "вышеобсуждаемому".
  • stas © (13.10.10 17:19) [12]
    Evgeney   (13.10.10 12:19) [4]

    Ты все сделал правильно (или скопировал), теперь осталось выяснить 2 вопроса:

    1. как называется твой dataset, который содержит Blob поле?
    2. Как называется это самое Blob поле
  • Evgeney (14.10.10 09:07) [13]
    Вот, может кому пригодиться...

    Query.Active:=False;
    Query.SQL.Text:='update table set `photography`=:photo where `id`=''1''';
    Query.Params.ParamByName('photo').LoadFromFile('file.bmp',ftGraphic);
    Query.ExecSQL;



    вот. Тема закрыта.
  • Плохиш © (14.10.10 10:48) [14]

    > Evgeney   (14.10.10 09:07) [13]
    >
    > Вот, может кому пригодиться...

    Спасибо, ты открыл мне глаза...
    Кстати, а куда делся image из первоначального вопроса?
  • sniknik © (14.10.10 11:48) [15]
    > Кстати, а куда делся image из первоначального вопроса?
    туда же, куда клиентский датасет из показанного "проблемного" кода... :)
    и оттуда же взялось BDE, а код конечно пригодится тем у кого ADO например... будет с чего спрашивать "почему не работает. подсказали бы раз такие все грамотные".
 
Конференция "Базы" » Вставка изображения в BLOB поле [D7]
Есть новые Нет новых   [119452   +50][b:0][p:0.002]