[Firebird] jak podejrzeć, co siedzi w BLOB?

0

Cześć, mam tabelę, w której jedno z pól ma typ BLOB.
Tak naprawdę przechowuję tam dane tekstowe.

Ale jak podejrzeć selectem, co tam siedzi?

Jeśli robię zwykłe: "Select * from tabela", dostaję np:

1 pole1 pole2 pole3 (memo)
2 inne1 inne2 inne3 (memo)

A chcę zamiast (memo) dostać to, co faktycznie tam siedzi(jest to tekst).
Próbowałem jakiegoś castowania "po omacku", ale nie udało się.

0
Juhas napisał(a)

Jeśli robię zwykłe: "Select * from tabela", dostaję np:

A gdzie to zwykłe select robisz ? W jakimś IDE ... czy w jakimś narzędziu SQL ? Np w delphiku, będzie pisało (memo) w gridzie (chociaż gdzieś kiedyś czytałem że można tam namalować zawartość blobika) w każdym razie jak położysz DBMemo na formę i podepniesz odpowiednie pole i datasource'a - to zobaczysz zawartość pola. Oprócz tego już z poziomu kodu masz zawsze dostęp do zawartości przez funkcję AsString.

Jeśli używać jakiegoś narzędzia to pytanie jakiego. Niektóre pozwalają wyświetlać zawartość blob'ów (obrazków, tekstów ...) zapisywać to do pliku ... (EMS SQL Manager - jest też wersja free).

Ponadto z tego co pamiętam, to w release notes do FB2 (chyba) pisało że BLOB'y tekstowe są traktowane na równi z VARCHAR'ami. Znowu pytanie, który to FB ? A tak nawiasem mówiąc to te nowe funkcje związane z blob'ami to zaczęły mieć ręce i nogi w FB2.1.

Juhas napisał(a)

Próbowałem jakiegoś castowania "po omacku", ale nie udało się.

Pochwal jak to robisz - może coś nie tak jak trzeba.

0

Po kolei. Robię to w Delphi, ale nie mogę posłużyć się ani metodą AsString, ani dodatkowym memo - z różnych powodów, to ma być po prostu widoczne na gridzie.

Używam FB w wersji 2.0

A castowania próbowałem tak:

select (cast(poleBlob as varchar(50))) as pole from tabela

i dostaję błąd: conversion error from string "blob"

0

zwykły grid nie pokazuje memo, popatrz jak to robi np. smdbgrid

0
KorzystamZGoogle napisał(a)

http://delphi.about.com/library/weekly/aa030105a.htm

No używam SMDBGrid.
Mam ustawioną odpowiednią opcję. Tylko mój problem polega chyba na tym, że kolumny tworzę dynamicznie. Tzn. wyjaśniam.

Mam okienko, do którego wpisuję zapytanie i przycisk: Wyświetl.
Np.: SELECT * FROM tabela

I teraz na gridzie mam całą zawartość tabeli TABELA. Jednakże jedna kolumna jest blobem i nie widzę zawartości. Nie mogę więc posłużyć się OnGetTextem(bo nie mam stworzonej kolumny), jak proponowane w linku, a czemu SMDBGrid nie wykonuje mi tego no to nie wiem. Podejrzewam, że właśnie dlatego, że nie tworzę statycznie kolumn.

Najlepiej jakby się udało coś takiego zrobić bezpośrednio w zapytaniu. Tzn. jakoś zrzutować tego bloba na varchara, czy coś, tak jak próbowałem na początku.

0

Nie widziałem nigdy SMDBGrid'a, ale należy się sprostowanie:

Nie mogę więc posłużyć się OnGetTextem(bo nie mam stworzonej kolumny)

w zwykłym DBGridzie się da więc i u Ciebie dać się powinno. Po otwarciu zapytanka, musisz dostać się do kolumny (napisz sobie lub poszukaj coś a'la ColumnByFieldname). A potem przypisz po prostu do niej utworzoną wcześniej metodę obsługi komunikatu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1