Paradox Blob alanına verileri SQL ile kaydetmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Mustafa YILMAZ
Üye
Mesajlar: 14
Kayıt: 02 Oca 2008 04:55
Konum: İstanbul

Paradox Blob alanına verileri SQL ile kaydetmek

Mesaj gönderen Mustafa YILMAZ »

Site içinde Sql, blob, query şeklinde arama yapmama rağmen istediğim cevaba bir türlü ulaşamadım. Paradox ile hazırlanan veritabanındaki blob alana RichEdit içindeki veriyi tükleyip almak için nasıl bir kod yazılması gerekir? site içinde table ile nasıl yapılacağını buldum, ancak query (insert, update) komutları ile tam sonuca ulaşamadım. SQL Kullanarak Bir JPEG Dosyasını Bir Blob Alana Yüklemek için aşağıdaki kodu internetten buldum:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var 
  ms: TMemoryStream;
begin
  if OpenPictureDialog1.Execute then
  begin
    ms := TMemoryStream.Create;
   try
  ms.LoadFromFile(OpenPictureDialog1.FileName);
  with Query1 do
  begin
   with SQL do 
   begin
   Clear;
   Add('INSERT INTO "ImageTbl.db" (ImageFld)');
   Add('VALUES (:param0 )');
  end;
Query1.ParamByName('param0').SetBlobData(ms.Memory, ms.Size);
   ExecSQL;
 end;
 finally
   ms.Free;
 end;
end;
end;
Aynı mantıkla hareket ederek aşağıdaki kodu yazdığımda:

Kod: Tümünü seç

procedure TForm1.btnEKLEClick(Sender: TObject);
var
  Blob: TBlobStream;
  BlobF:TBlobField;
  MStream:TMemoryStream;
begin
  MStream:=TMemoryStream.Create;
  try
    Query1.Close;
    Query1.SQL.Clear;
    RW2.SaveRVFToStream(MStream,FALSE);
    Query1.SQL.Add('insert into ADSOYAD');
    Query1.SQL.Add('(AD,SOYAD,NOS,METIN)');
    Query1.SQL.Add('values('+QuotedStr(Edit1.Text)+','+QuotedStr(Edit2.Text)+','+QuotedStr(Edit3.Text)+',:=param0)');
    Query1.ParamByName('param0').SetBlobData(MStream.Memory, MStream.Size);
    Query1.ExecSQL;
    Query1.SQL.Clear;
    Query1.SQL.Add('Select *From ADSOYAD');
    Query1.Open;
  finally
    MStream.Free;
  end;
'param0 bulunamadı' gibi bir hata mesajı veriyor. Bu konuda yardım ederseniz veya site içerisinde benim ulaşamadığım adresler varsa yazabilirseniz memnun olurum.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Paradox Blob alanına verileri SQL ile kaydetmek

Mesaj gönderen aslangeri »

s.a.
parametreyi yanlış tanımlamışsınız.
:=param0
yazmışsınız.
orda eşittir (=) olmayacak.
doğrusu

Kod: Tümünü seç

:param0
olacak.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Mustafa YILMAZ
Üye
Mesajlar: 14
Kayıt: 02 Oca 2008 04:55
Konum: İstanbul

Re: Paradox Blob alanına verileri SQL ile kaydetmek

Mesaj gönderen Mustafa YILMAZ »

Teşekkürler. Kodu başka kaynaktan bulduğum için aynen almıştım, ancak =: yerine : yazınca kod çalıştı. Ancak cevaplayan olursa kafama takılan bir şeyi daha sormak istiyorum.
Yine SQL kullanarak Update ile bir kaydı değiştireceğimiz zaman, bütün kayıtları değil de sadece istediğimiz kaydı değiştirsin diye where ile tanımlanan alan, otomatik arttırılan sayı ve aynı zamanda index alan olursa ( örneğin bu sütun ismi NO ise), Update yapmadan önce buradaki rakamın kaç olduğunu okutup SQL komutu sonuna Where NO=okutulan rakamı seçince neden No='1' bulunamadı vb. hata verir. Diğer alanlarda problem yok ancak neden bu alan bu şekilde problem verir. Index alanı bu alan seçtiğim için birbiri ile aynı olan alanların Update komutundan etkilenmemesi için ne yapılmalı.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Paradox Blob alanına verileri SQL ile kaydetmek

Mesaj gönderen aslangeri »

s.a.
eğer alanın ismi "NO" ise vermesi normaldir.
gerçi sql in tamamını görmek lazım ama "NO" özel anlamı olan bir kelime olduğu için alan ismi olarak kullanmak pek doğru değil.
eğer alan ismi olarak kullandıysanız kullandığınız dilin syntaxına göre bunun özel anlamlı "NO" değil tablonuzdaki alan olan "NO" olduğını belirtmeniz lazım.
örnek olarak "NOT", "AND", "OR" kelimelerini de alabilirsiniz. onun gibi bir durum olabilir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
cool_erci
Üye
Mesajlar: 7
Kayıt: 21 Ağu 2004 02:04
İletişim:

Re: Paradox Blob alanına verileri SQL ile kaydetmek

Mesaj gönderen cool_erci »

s.a.
burdaki sql kodunda yazdığın "Query1.ParamByName('param0').SetBlobData(MStream.Memory, MStream.Size);" sorgunun mssql ve adoyla olan hali nasıl olabilir acaba bilen varmıdır :(
adoqueryde parambynamede sonra setblobdata diyemiyoz, mssql deki bir tabloya adoqueryde sql kodu kullanarak blob veri kaydedebiliyoruz ?
cool_erci
Üye
Mesajlar: 7
Kayıt: 21 Ağu 2004 02:04
İletişim:

Re: Paradox Blob alanına verileri SQL ile kaydetmek

Mesaj gönderen cool_erci »

böyle diyerek yapıyormuşuz :)

"qry_ekle.Parameters.ParamByName('par2').LoadFromStream(fs,ftblob);"

fs filestream oluyor, ftblob ta blob tipinde veri olacağını sölüyor.
Cevapla