Blob alanın içeriğini Select ile gösterme

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Blob alanın içeriğini Select ile gösterme

Mesaj gönderen Asri »

Merhaba,
Blob alanın içeriğini Sql'de select komutu ile göstermek mümkün müdür?
Lks 2 programında bir table da blob alan var. select komutu ile listelediğimde blob alanı ????????????????????????????? şeklinde gösteriyor. Delphi de ado kullanarak dbgridde de o alanda BLOB yazıyor.
Aşağıdaki kodu yazarak :

Kod: Tümünü seç


procedure TForm1.Button1Click(Sender: TObject);
 VAR
  SS:STRING;
    I, RAKAM :INTEGER;


begin

       SS:=ADOTABLE1.FIELDS.FIELDBYNAME('LDATA').ASSTRING;

       LABEL1.Caption:=ADOTABLE1.FIELDS.FIELDBYNAME('LDATA').ASSTRING;


               FOR I:=1 TO LENGTH(SS) DO
                  BEGIN
                     MEMO1.Lines.Add(INTTOSTR(ORD(SS[I]))+' * '+SS[I] )    ;

                  END;
end;

label1.captionda girdiğim veri olan :
YACNUT ARAK DETAYLI BİLGİSİ#TUNCAY KARA DETAYLI BİLGİSİ 2.SATIR
bilgisini yazıyor. Kırmızı işaretli karakterler satır uzunluğunu veriyor.

Yukarıdaki veriyi select komutu ile gösterme imkanım varmı ? Yoksa gösteremez miyiz?
Delphi tarafında string değişkenden okuyabiliyorum. Ama Lks tarafında Select ile almam lazım.
Not : Bu mesajı arkadaşım ismi ile yazıyorum. Kendisi sql e yabancı olduğu için bu notu yazmamı istedi.
İyi çalışmalar.
------------------------
ofenX
En son Asri tarafından 30 Ağu 2005 05:12 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
ilgili alanın ongettext eventina kod yazarak yapabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

label yerine bir tmemo ya aktarmayı deniyebilirsin.
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

Merhaba,
Ali Erdoğan yazdı:label yerine bir tmemo ya aktarmayı deniyebilirsin.
Dikkat ederseniz, Lks Ticari Programında Select komutu ile yapmam gerektiğini yazmışım. Delphi de örneğini verirken delphide o veriyi görebildiğimi açıklamak için örnek vermiştim. Yoksa delphi tarafında bir işim yok.
Benim sormak istediğim Select ile o veriyi görüp göremeyeceğimi öğrenmek.
Mantıken delphide okuyabildiğime göre Sql komutu ile de okuyabilmem gerekir. Lks Ms Sql kullanıyor. Ms Sql in imkanlarını kullanarak görüntülemeyi sormuştum.
İyi çalışmalar.

___________________
ofenX
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

Merhaba,
Sorumun cevabını bulup :
http://groups.yahoo.com/group/logolks2/message/72
adresinde yayınladım. Cevabı görmek isteyenler o adresi ziyaret edebilir.

İyi çalışmalar.

________________
ofenX
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba,

@asri Hocam kızma ama soruyu buraya soruyorsunda cevabı niçin buraya yazmıyorsun yarin öbür gün bir arkadaşa böyle bişey lazım olduğunda arama sonucundan sonra birde bu siteye....vs.

ufak bir copy past ile bence daha faydalı olunabilinir.

Teşekkürler. :)
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

pro_imaj yazdı:Merhaba,

@asri Hocam kızma ama soruyu buraya soruyorsunda cevabı niçin buraya yazmıyorsun yarin öbür gün bir arkadaşa böyle bişey lazım olduğunda arama sonucundan sonra birde bu siteye....vs.

ufak bir copy past ile bence daha faydalı olunabilinir.

Teşekkürler. :)

Merhaba,
Çözümüm Lks programında yapılacağı için buraya yazmayı uygun görmedim. Yani delphi ile alakası olmadığı için yazmadım. Ama benim gibi Lks ile ilgilenen olursa ordan baksın diye.
Ama tavsiyenize uyup http://groups.yahoo.com/group/logolks2/message/72 adresindeki mesajı yazayım.
_____________________________________________________________

Merhaba,
Bir haftalık çabadan sonra inşallah derdinize derman olacak yöntemi bulmuşumdur.
Ms Sql server bilgim olmadığından bu kadar uzun sürdü. Detay verilerini vtyonet.exe de bulamıyordum. ?????? çıkıyordu.
Ama delpi ile bağlanıp bir değişkene atayınca girdiğim verileri görüyordum. Bu yüzden bunun mümkün olabileceğine emin oldum.
Yöntem olarak şöyle bir öneride bulunacağım.
a) LG_XXX_FIRMDOC tablosuna bir computed alan ekleyeceğiz.
b) Fatura alanında tanımlı alan oluşturacağız.
c) Tanımlı alanda kullanmak üzere bir çevrim fonksiyonunu LKSDB
dosyasında oluşturacağız.

Size vereceğim yöntemle şu an sadece cari karttaki detaylı bilgiyi
alacaksınız. Diğerlerini de zaten kolay bir şekilde
ayarlayabilirsiniz. Örneğin vereceğim yöntemdeki _sqlinfo
fonksiyonunda infotyp=21
yerine 20 yaparsanız stok kartındaki detay bilgi olacaktır.

********************** uyarı ***************************
ben demo da çalıştığım için verilerime o kadar önem vermiyorum.
* Yedeksiz çalışmayın.
** veri bozulmalarından beni sorumlu tutamazsınız.

Yönteme gelince
a) Vtyonet.exe yi çalıştırın.
b) Çalıştır Menüsünden Sql Sorgusu seçeneğini seçin
c) üsteki comboboxtan LKSDB yi seçin.
d) Sorgu giriş kısmına
ALTER TABLE LG_XXX_FIRMDOC ADD BILGI AS SUBSTRING(LDATA,1,8000)
yazıp Çalıştır butonuna basın. XXX firmanın numarasıdır. Bunu her
firma için yapmak zorundasınız.
Komut başarıyla çalıştırıldı. mesajı gelirse başarılı bir şekilde
girmişsiniz demektir.
Komutları copy +paste ile alırsanız daha iyi olur.
e) Yukarıdaki temizle butonuna basın. sonra aşağıdaki komutların
hepsini copy paste ile girdikten sonra
Çalıştır butonuna basın

CREATE FUNCTION KYDETAY (@DEGER VARCHAR (8000))

RETURNS VARCHAR(8000)
AS

BEGIN

DECLARE @KYDETAY VARCHAR (8000)

SET @KYDETAY=''

WHILE LEN(@DEGER)>1

BEGIN

SET @KYDETAY=@KYDETAY+SUBSTRING(@DEGER,2,ASCII(SUBSTRING(
@DEGER,1,1)))+CHAR(13)

SET @DEGER =STUFF(@DEGER,1,(ASCII(SUBSTRING(@DEGER,1,1))+1),'')

END

RETURN (@KYDETAY)

END

f) lksde Faturalar tasarımına gelip Tanımlı alanlara aşağıdaki
tanımlı alanları ve içeriklerini girin

ALAN TÜRÜ İÇERİĞİ
-------- ------ -----------------------------------
1) CARI_DETAY METİN _SQLINFO("LKSDB.DBO.KYDETAY(BILGI)","LG_"+[F]
+"_FIRMDOC","INFOTYP=21 AND INFOREF='"+STR(R1.logicalReF)+"'")
2) F METİIN SUBSTR("000000",1,3-STRLEN(STR([Firma
Numarası])))+STR([Firma Numarası])

g) tanımladığınız alanları forma alın. Sonra dosyayı kaydedin.
h) bir fatura denemesi yapın.

Şu an aklıma gelen bu kadar inşallah unuttuğum bir şey yoktur.
Daha kolayını daha iyisini bilen varsa lütfen mesaj atsın. Mesela
tüm firmalar için olacak şekilde yapmamışım.
computed alanı her firma için tek tek yapmak zorundayız.
Yazıcıda denemedim. ama ekranda istediğimiz görünüyor.
İyi çalışmalar.
_____________________________________________________________

Herkese iyi çalışmalar.
_____________
ofenX
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Cevapla