🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi.bazy-danych
15 messages
15 total messages Started by jw_developer Sun, 12 Nov 2017 12:19
CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81109
Author: jw_developer
Date: Sun, 12 Nov 2017 12:19
19 lines
679 bytes
Witam !

Windows 10/64 bit + Firebird 2.5 + CodeTyphon 6.2 +
ZEOSLIB(zainstalowana z CT)

Pole w bazie danych zadeklarowane jako :
F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL
W poprzedniej wersji CT (5.9) zapis i odczyt grafiki działał bez
problemu a w aktualnej wersji nie zapisuje się nic albo ewentualnie
jakieś "krzaki" bez względu na format zapisywanej grafiki.

StoredProc_1.Params.AddParam(StoredProc_1.Params.CreateParam(ftBlob,'P_03',
ptInput));
if OpenPictureDialog1.FileName.IsEmpty then
   StoredProc_1.ParamByName('P_03').Value := Null
else
StoredProc_1.ParamByName('P_03').LoadFromFile(OpenPictureDialog.FileName,
ftBlob);

Gdzie może być błąd ?.....
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81110
Author: miab
Date: Mon, 13 Nov 2017 11:51
6 lines
133 bytes
W dniu 12-11-2017 o 12:19, jw_developer pisze:
> F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL

Dlaczego NOT NULL?
Masz klucz?

miab
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81111
Author: jw_developer
Date: Mon, 13 Nov 2017 13:28
12 lines
426 bytes
W dniu 2017-11-13 o 11:51, miab pisze:
> W dniu 12-11-2017 o 12:19, jw_developer pisze:
>> F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL
>
> Dlaczego NOT NULL?
> Masz klucz?
>
> miab

Tak. Jest to tabela przechowująca wizerunki (zdjęcia) pracowników
(jeżeli takowe istnieją), która posiada również pole F_02 (integer)
będącym kluczem obcym do tabeli pracowników. Zapomniałem napisać, że
ZEOS-y to 7.2.1-rc
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81112
Author: miab
Date: Mon, 13 Nov 2017 15:21
40 lines
1153 bytes
W dniu 13-11-2017 o 13:28, jw_developer pisze:
> W dniu 2017-11-13 o 11:51, miab pisze:
>> W dniu 12-11-2017 o 12:19, jw_developer pisze:
>>> F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL
>>
>> Dlaczego NOT NULL?
>> Masz klucz?
>>
>> miab
>
> Tak. Jest to tabela przechowująca wizerunki (zdjęcia) pracowników
> (jeżeli takowe istnieją), która posiada również pole F_02 (integer)
> będącym kluczem obcym do tabeli pracowników. Zapomniałem napisać, że
> ZEOS-y to 7.2.1-rc

Mi taka sekwencja:

<code>
  if OpenPictureDialog1.Execute then
    begin
ZQuery1.ParamByName('F_BLOB').LoadFromFile(OpenPictureDialog1.FileName,
ftBlob);
    ZQuery1.ParamByName('F1').Value:=StrToInt(Edit1.Text);
    ZQuery1.ParamByName('F2').Value:íit2.Text;
    ZQuery1.ExecSQL;
    end;
</code>

dla SQL:
INSERT INTO T1 VALUES (:F1, :F2, :F_BLOB)

działa z formatem *.bmp w Lazarus 1.8RC5-Win32 i Delphi 10-Win32
dla FB2.5 i ZEOS 7.2.x svn 4052(7.3.x zresztą też):
https://sourceforge.net/p/zeoslib/code-0/HEAD/tree/branches/testing-7.2/
Nie wiem dlaczego w CT to nie działa(może autor za bardzo odpłynął od
głównego nurtu Lazarus'a)

miab


Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81113
Author: miab
Date: Mon, 13 Nov 2017 15:40
23 lines
732 bytes
W dniu 13-11-2017 o 13:28, jw_developer pisze:
> W dniu 2017-11-13 o 11:51, miab pisze:
>> W dniu 12-11-2017 o 12:19, jw_developer pisze:
>>> F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL
>>
>> Dlaczego NOT NULL?
>> Masz klucz?
>>
>> miab
>
> Tak. Jest to tabela przechowująca wizerunki (zdjęcia) pracowników
> (jeżeli takowe istnieją), która posiada również pole F_02 (integer)
> będącym kluczem obcym do tabeli pracowników. Zapomniałem napisać, że
> ZEOS-y to 7.2.1-rc

Na marginesie .
Nie wiem dlaczego piszesz ze używasz:
ZEOS-y to 7.2.1-rc
skoro autor CT pisze:
-Update pl_ZeosDBO to Ver 6.3.1 Source SVN Rev 4013
do tego nie za bardzo wiem za bardzo z której gałęzi ciągnie i co tam
przerabia.

miab
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81114
Author: Roman Tyczka
Date: Mon, 13 Nov 2017 15:40
14 lines
346 bytes
On Sun, 12 Nov 2017 12:19:16 +0100, jw_developer wrote:

> Pole w bazie danych zadeklarowane jako :
> F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL
[...]
> StoredProc_1.ParamByName('P_03').LoadFromFile(OpenPictureDialog.FileName,
> ftBlob);

> Gdzie może być błąd ?.....

W nazwie kolumny... nie P_03 tylko F_03

--
pozdrawiam
Roman Tyczka
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81115
Author: miab
Date: Mon, 13 Nov 2017 15:42
16 lines
441 bytes
W dniu 13-11-2017 o 15:40, Roman Tyczka pisze:
> On Sun, 12 Nov 2017 12:19:16 +0100, jw_developer wrote:
>
>> Pole w bazie danych zadeklarowane jako :
>> F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL
> [...]
>> StoredProc_1.ParamByName('P_03').LoadFromFile(OpenPictureDialog.FileName,
>> ftBlob);
>
>> Gdzie może być błąd ?.....
>
> W nazwie kolumny... nie P_03 tylko F_03
>

No, parametry można sobie nazywać fantazyjnie.

miab
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81116
Author: Roman Tyczka
Date: Mon, 13 Nov 2017 16:04
13 lines
274 bytes
On Mon, 13 Nov 2017 15:42:55 +0100, miab wrote:

>>> Gdzie może być błąd ?.....
>>
>> W nazwie kolumny... nie P_03 tylko F_03
>>
>
> No, parametry można sobie nazywać fantazyjnie.

Tak, ale zwracam uwagę, że tu też może być błąd.

--
pozdrawiam
Roman Tyczka
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81117
Author: miab
Date: Mon, 13 Nov 2017 16:36
44 lines
1367 bytes
W dniu 13-11-2017 o 15:21, miab pisze:
> W dniu 13-11-2017 o 13:28, jw_developer pisze:
>> W dniu 2017-11-13 o 11:51, miab pisze:
>>> W dniu 12-11-2017 o 12:19, jw_developer pisze:
>>>> F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL
>>>
>>> Dlaczego NOT NULL?
>>> Masz klucz?
>>>
>>> miab
>>
>> Tak. Jest to tabela przechowująca wizerunki (zdjęcia) pracowników
>> (jeżeli takowe istnieją), która posiada również pole F_02 (integer)
>> będącym kluczem obcym do tabeli pracowników. Zapomniałem napisać, że
>> ZEOS-y to 7.2.1-rc
>
> Mi taka sekwencja:
>
> <code>
>   if OpenPictureDialog1.Execute then
>     begin
> ZQuery1.ParamByName('F_BLOB').LoadFromFile(OpenPictureDialog1.FileName,
> ftBlob);
>     ZQuery1.ParamByName('F1').Value:=StrToInt(Edit1.Text);
>     ZQuery1.ParamByName('F2').Value:íit2.Text;
>     ZQuery1.ExecSQL;
>     end;
> </code>
>
> dla SQL:
> INSERT INTO T1 VALUES (:F1, :F2, :F_BLOB)
>
> działa z formatem *.bmp w Lazarus 1.8RC5-Win32 i Delphi 10-Win32
> dla FB2.5 i ZEOS 7.2.x svn 4052(7.3.x zresztą też):
> https://sourceforge.net/p/zeoslib/code-0/HEAD/tree/branches/testing-7.2/
> Nie wiem dlaczego w CT to nie działa(może autor za bardzo odpłynął od
> głównego nurtu Lazarus'a)
>
> miab

W wersji:
Typhon 6.2 Data 2017-05-17 r54940 FPC 3.1.1 i386-win32-win32/win64
też mi to działa.

miab
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81118
Author: jw_developer
Date: Tue, 14 Nov 2017 11:55
56 lines
1885 bytes
W dniu 2017-11-13 o 15:21, miab pisze:
> W dniu 13-11-2017 o 13:28, jw_developer pisze:
>> W dniu 2017-11-13 o 11:51, miab pisze:
>>> W dniu 12-11-2017 o 12:19, jw_developer pisze:
>>>> F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL
>>>
>>> Dlaczego NOT NULL?
>>> Masz klucz?
>>>
>>> miab
>>
>> Tak. Jest to tabela przechowująca wizerunki (zdjęcia) pracowników
>> (jeżeli takowe istnieją), która posiada również pole F_02 (integer)
>> będącym kluczem obcym do tabeli pracowników. Zapomniałem napisać, że
>> ZEOS-y to 7.2.1-rc
>
> Mi taka sekwencja:
>
> <code>
>   if OpenPictureDialog1.Execute then
>     begin
> ZQuery1.ParamByName('F_BLOB').LoadFromFile(OpenPictureDialog1.FileName,
> ftBlob);
>     ZQuery1.ParamByName('F1').Value:=StrToInt(Edit1.Text);
>     ZQuery1.ParamByName('F2').Value:íit2.Text;
>     ZQuery1.ExecSQL;
>     end;
> </code>
>
> dla SQL:
> INSERT INTO T1 VALUES (:F1, :F2, :F_BLOB)
>
> działa z formatem *.bmp w Lazarus 1.8RC5-Win32 i Delphi 10-Win32
> dla FB2.5 i ZEOS 7.2.x svn 4052(7.3.x zresztą też):
> https://sourceforge.net/p/zeoslib/code-0/HEAD/tree/branches/testing-7.2/
> Nie wiem dlaczego w CT to nie działa(może autor za bardzo odpłynął od
> głównego nurtu Lazarus'a)
>
> miab
>
>
>

przy wykorzystaniu powyższej konstrukcji udało mi się zapisać *.bmp lecz
pozostałe formaty dalej się *wykrzaczają*. Jest to ważne, ponieważ mam
również potrzebę zapisywania do bazy załączników w najrozmaitrzych
formatach, z których *.bmp będzie formatem zapisywanym sporadyczne !
Przy zapisie tekstowych BLOB-ów jest OK

CT 6.2 2017-10-30 r55649 FPC 3.1.1
ZConnection -> Version -> 7.2.1 -rc

Przy okazji, czy zna ktoś jakąś sensowną alternatywę (darmową) do
obsługi Firebird możliwą do zainstalowania w CT 6.2 (oczywiście poza
pakietami instalowanymi razem z IDE) ?

Pozdrawiam
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81119
Author: miab
Date: Tue, 14 Nov 2017 12:04
13 lines
599 bytes
W dniu 14-11-2017 o 11:55, jw_developer pisze:

>
> przy wykorzystaniu powyższej konstrukcji udało mi się zapisać *.bmp lecz
> pozostałe formaty dalej się *wykrzaczają*. Jest to ważne, ponieważ mam
> również potrzebę zapisywania do bazy załączników w najrozmaitrzych
> formatach, z których *.bmp będzie formatem zapisywanym sporadyczne !
> Przy zapisie tekstowych BLOB-ów jest OK

Z tego w zasadzie wynika ze problem masz z prezentacja wizualną
uprzednio zapisanych a następnie odczytanych danych. Może to:
http://forum.lazarus.freepascal.org/index.php?topic606.0

miab
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81120
Author: jw_developer
Date: Tue, 14 Nov 2017 12:31
22 lines
978 bytes
W dniu 2017-11-14 o 12:04, miab pisze:
> W dniu 14-11-2017 o 11:55, jw_developer pisze:
>
>>
>> przy wykorzystaniu powyższej konstrukcji udało mi się zapisać *.bmp
>> lecz pozostałe formaty dalej się *wykrzaczają*. Jest to ważne,
>> ponieważ mam również potrzebę zapisywania do bazy załączników w
>> najrozmaitrzych formatach, z których *.bmp będzie formatem zapisywanym
>> sporadyczne !
>> Przy zapisie tekstowych BLOB-ów jest OK
>
> Z tego w zasadzie wynika ze problem masz z prezentacja wizualną
> uprzednio zapisanych a następnie odczytanych danych. Może to:
> http://forum.lazarus.freepascal.org/index.php?topic606.0
>
> miab

Ponieważ korzystam z IBExpert-a mam możliwość podglądu zapisanych danych
w przeglądarce BLOB-ów i widzę, że problem leży nie w prezentacji a w
błędnym zapisie.Jak już wcześniej pisałem, we wcześniejszej wersji
CT 5.9 wszystko działało rewelacyjnie (dokładnie ta sama wersja FB) !

Pozdrawiam
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81121
Author: miab
Date: Tue, 14 Nov 2017 13:31
30 lines
1424 bytes
W dniu 14-11-2017 o 12:31, jw_developer pisze:
> W dniu 2017-11-14 o 12:04, miab pisze:
>> W dniu 14-11-2017 o 11:55, jw_developer pisze:
>>
>>>
>>> przy wykorzystaniu powyższej konstrukcji udało mi się zapisać *.bmp
>>> lecz pozostałe formaty dalej się *wykrzaczają*. Jest to ważne,
>>> ponieważ mam również potrzebę zapisywania do bazy załączników w
>>> najrozmaitrzych formatach, z których *.bmp będzie formatem
>>> zapisywanym sporadyczne !
>>> Przy zapisie tekstowych BLOB-ów jest OK
>>
>> Z tego w zasadzie wynika ze problem masz z prezentacja wizualną
>> uprzednio zapisanych a następnie odczytanych danych. Może to:
>> http://forum.lazarus.freepascal.org/index.php?topic606.0
>>
>> miab
>
> Ponieważ korzystam z IBExpert-a mam możliwość podglądu zapisanych danych
> w przeglądarce BLOB-ów i widzę, że problem leży nie w prezentacji a w
> błędnym zapisie.Jak już wcześniej pisałem, we wcześniejszej wersji
> CT 5.9 wszystko działało rewelacyjnie (dokładnie ta sama wersja FB) !

U mnie prawidłowao działa zapis wspomniana metodą w:
Lazarus 1.8RC5 ZEOS 7.2.x svn 4052
i CT 6.2 pl_ZeosDBO Ver 6.1.2 Date 10-03-2017 SVN trunk Rev 3981.
I dotyczy to formatów *.bmp, *.jpg i *.png i widać to nawet w DBImage.
Na marginesie w Delphi 10 DBImage radzi sobie tylko z formatem *.bmp.
Z tego co pamietam w podobnej sytuacji nie używałem w Delphi wprost DBImage.

miab
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81122
Author: miab
Date: Tue, 28 Nov 2017 00:16
58 lines
1615 bytes
W dniu 12-11-2017 o 12:19, jw_developer pisze:
> Witam !
>
> Windows 10/64 bit + Firebird 2.5 + CodeTyphon 6.2 +
> ZEOSLIB(zainstalowana z CT)
>
> Pole w bazie danych zadeklarowane jako :
> F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL
> W poprzedniej wersji CT (5.9) zapis i odczyt grafiki działał bez
> problemu a w aktualnej wersji nie zapisuje się nic albo ewentualnie
> jakieś "krzaki" bez względu na format zapisywanej grafiki.
>
> StoredProc_1.Params.AddParam(StoredProc_1.Params.CreateParam(ftBlob,'P_03',
> ptInput));
> if OpenPictureDialog1.FileName.IsEmpty then
>    StoredProc_1.ParamByName('P_03').Value := Null
> else
> StoredProc_1.ParamByName('P_03').LoadFromFile(OpenPictureDialog.FileName, ftBlob);
>
>
> Gdzie może być błąd ?.....

Raczej nie w ZEOS (teraz sprawdziłem).
W Delphi 10 i Lazarus 1.8RC5 działa
.LoadFromFile(OpenPictureDialog.FileName, ftBlob)
natomiast w CT 6.30 nie(znaczy działa z błędami w danych).
Natomiast ładowanie przez pośredniego stream-a działa dla wszystkich:
<code>
procedure TForm1.Button4Click(Sender: TObject);
var
   blob, fs: TStream;
begin
   if OpenPictureDialog1.Execute then
   begin
   //
   ZTable1.Insert;
   ZTable1.FieldByName('F1').AsInteger:= 4;
   blob:= ZTable1.CreateBlobStream(ZTable1.FieldByName('F_BLOB'), bmWrite);
   try
     blob.Seek(0, soFromBeginning);

     fs:= TFileStream.Create(OpenPictureDialog1.FileName, fmOpenRead or
       fmShareDenyWrite);
     try
       blob.CopyFrom(fs, fs.Size)
     finally
       fs.Free
     end;
   finally
     blob.Free
   end;

   ZTable1.Post;

   end;
end;
</code>

miab
Re: CodeTyphon + ZEOSLIB + problem z zapisem grafiki
#81123
Author: jw_developer
Date: Tue, 28 Nov 2017 13:19
77 lines
2498 bytes
W dniu 2017-11-28 o 00:16, miab pisze:
> W dniu 12-11-2017 o 12:19, jw_developer pisze:
>> Witam !
>>
>> Windows 10/64 bit + Firebird 2.5 + CodeTyphon 6.2 +
>> ZEOSLIB(zainstalowana z CT)
>>
>> Pole w bazie danych zadeklarowane jako :
>> F_03 BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL
>> W poprzedniej wersji CT (5.9) zapis i odczyt grafiki działał bez
>> problemu a w aktualnej wersji nie zapisuje się nic albo ewentualnie
>> jakieś "krzaki" bez względu na format zapisywanej grafiki.
>>
>> StoredProc_1.Params.AddParam(StoredProc_1.Params.CreateParam(ftBlob,'P_03',
>> ptInput));
>> if OpenPictureDialog1.FileName.IsEmpty then
>>    StoredProc_1.ParamByName('P_03').Value := Null
>> else
>> StoredProc_1.ParamByName('P_03').LoadFromFile(OpenPictureDialog.FileName,
>> ftBlob);
>>
>> Gdzie może być błąd ?.....
>
> Raczej nie w ZEOS (teraz sprawdziłem).
> W Delphi 10 i Lazarus 1.8RC5 działa
> .LoadFromFile(OpenPictureDialog.FileName, ftBlob)
> natomiast w CT 6.30 nie(znaczy działa z błędami w danych).
> Natomiast ładowanie przez pośredniego stream-a działa dla wszystkich:
> <code>
> procedure TForm1.Button4Click(Sender: TObject);
> var
>    blob, fs: TStream;
> begin
>    if OpenPictureDialog1.Execute then
>    begin
>    //
>    ZTable1.Insert;
>    ZTable1.FieldByName('F1').AsInteger:= 4;
>    blob:= ZTable1.CreateBlobStream(ZTable1.FieldByName('F_BLOB'), bmWrite);
>    try
>      blob.Seek(0, soFromBeginning);
>
>      fs:= TFileStream.Create(OpenPictureDialog1.FileName, fmOpenRead or
>        fmShareDenyWrite);
>      try
>        blob.CopyFrom(fs, fs.Size)
>      finally
>        fs.Free
>      end;
>    finally
>      blob.Free
>    end;
>
>    ZTable1.Post;
>
>    end;
> end;
> </code>
>
> miab

Witam !

Chociaż jest to konstrukcja *bardzo pokrętna* to działa !
Niestety ja dokonuję zapisu z użyciem StoredProc + Execproc (BLOB jest
jednym z parametrów) i nie wiem za bardzo jak dostosować powyższy kod.
Poza tym pozostaje problem odczytu (umieszczenia LOBA w Image.Picture) gdyż

ST := TStringStream.Create(StoredProc_1.ParamByName('NAZWA PARAMETRU
BLOB').AsString);
Image1.Picture.LoadFromStream(ST);

również nie działa (w CT 5.9 działa super !). Pobieranie parametru
dokonuje się również przy użyciu StoreProc + Execproc gdyż w
międzyczasie dokonywane są inne odczyty, zapisy do tabel tymczasowych
itp ... co mogłoby generować niepotrzebny ruch w sieci.

Pozdrawiam
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads