word yazılarını veritabanına kaydetme (sybase)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

word yazılarını veritabanına kaydetme (sybase)

Mesaj gönderen abdulkadir »

selamlar

arkadaslar Richedit e yazıp yazıları veritabanına kaydediyorum düz txt olarak kaydediliyor

oysa yazıları sekillendirdigim gibi kaydetmek ve okumak istiyorum
RengaRenk yazılar bold italik filan yani

ne yapmam lazım

Sybase veritabanı kullanıyorum


şimdiden tesekkürler
SEVGİLER
En son abdulkadir tarafından 23 Haz 2004 12:48 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Hocam hiç bi fikrim yok ama bakıyorum hemen sybase'ci olmuşsun. Fahrettin bey başarılı olmuş yani :P
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

:lol:
Haklısın

Fahrettin bey sagolsun bizim için en iyi olanı ister.

Hele bir kullan sende sybase terfi etmessen şaşarım :lol:
Kullanıcı avatarı
mepc
Üye
Mesajlar: 191
Kayıt: 26 Eyl 2003 11:39
Konum: Ankara

Mesaj gönderen mepc »

kayıt yaparken txt dosyası olarak değil .rtf uzantılı olarak kaydederseniz kaydettiğiniz şekilde görüntülersiniz.
Bilgi paylaşıldıkça güzeldir.
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

mepc yazdı:kayıt yaparken txt dosyası olarak değil .rtf uzantılı olarak kaydederseniz kaydettiğiniz şekilde görüntülersiniz.
ilgin için tesekkür ederim ama veritabanına kaydetmem lazım
Kullanıcı avatarı
mepc
Üye
Mesajlar: 191
Kayıt: 26 Eyl 2003 11:39
Konum: Ankara

Mesaj gönderen mepc »

o zaman kaydedeceğin alanı Format memo türünde seçmelisin tabi kullandığın veritabanında bu varmı bilmiyorum (hiç kullanmadım)

format memo olarak kullanırsan ve veri girişinide richeditten yaparsan istediğin gibi renklendirme ve font ayarı yapabilirsin.
Bilgi paylaşıldıkça güzeldir.
Kullanıcı avatarı
mepc
Üye
Mesajlar: 191
Kayıt: 26 Eyl 2003 11:39
Konum: Ankara

Mesaj gönderen mepc »

İlave olarak şunu belirteyim

Eğer bu memo alanda sql kullanarak sorgulama yapacaksan format memo kullanımı problem olabilir. Çünkü format memo alanda türkçe karakterler farklı şekillerle ifade ediliyor.

Tercih sizin.
Bilgi paylaşıldıkça güzeldir.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Alan Blob-Text olması yeterli
kullandıgın dbaware bilesen onemli yani ne ile vt ye kayıt yapıyorsun
bu alana bir dbedit ile de kayıt girersin dbmemo ile de dbrichedit ile de
ama herbirinde ayrı bir sonuc alırsın
sen burada dbrichedit ile kayıt yapmalısın
kayıt yapacagın form uzerine de dbricheditde secili alanı renklendiren fontunu vs. ayarlayan bir toolbar yerlestireceksin.
basit de olsa ben boyle bir uygulama yaptım, ufak tefek hatalar dısında calısıyor.
Marco Cantunun bir orneginde richedit kullanımını gostermmisti
bende ondan faydalanarak yapmıstım
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Aslınta tek problem veritabanı tarafında ilgili alan icin secilen tipten ibaret... tip olarak zannedersem varchar ya da turevi bir tip secilmis... Bunun yerine long varchar veya text secilmeli....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

Merhaba hocam
VT de ICERIK alanı Longvarchar

office2000 de Word tablosu falan olusturup copy paste edip
kaydediyorum

Kod: Tümünü seç

  SQL.Add(''''+RichEdit1.Lines.Text+''',');
db de cekerkerken

Kod: Tümünü seç

RichEdit1.Lines.Text:=FieldByName('ICERIK').AsVariant;

RichEdit1.Lines.Add(FieldByName('ICERIK').AsString);
bir cok sekilde denedim sadece yazıları alabiliyorum

tablolar şöyle dursun sadece yazıyı bold seklinde kaydediyorum
sonuc yine aynı düz yazı seklinde.

Richedit in özelliklerini kurcaladım deyismedi

ilginize tesekkür ederim
sevgiler.
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

S.A
Delphi nin help in deki bir örnekten yola cıkarak su sekilde istedigimi elde ettim Ama en dogrusu bumu bilemiyorum

Kaydederken

Kod: Tümünü seç

var
  Stream1,Stream2: TMemoryStream;
begin
  inherited;
  Stream1 := TMemoryStream.Create;
  Stream2 := TMemoryStream.Create;
  try
    RichBASLIK.Lines.SavetoStream(Stream1);
    RichICERIK.Lines.SavetoStream(Stream2);
    Query1.Edit;
    TBlobField(Query1.FieldByName('BASLIK')).LoadFromStream(Stream1);
    TBlobField(Query1.FieldByName('ICERIK')).LoadFromStream(Stream2);
    Query1.FieldByName('ORTA').AsString:= EditORTA.Text;
    Query1.FieldByName('AD').AsString:= EditADI.Text;
    Query1.Post;
  finally
    Stream1.Free;
  end;
 end;
DB den cekerken

Kod: Tümünü seç

procedure TTebligatlarForm.TebligatGoster(ID: string);
var
  WordBaslik,Wordicerik:TBlobStream;
begin
WordBaslik:=Nil;
Wordicerik:=Nil;
 with  Query1  do begin
 Active:=true;
SQL.Clear;
Close;
SQL.Add('select * FROM AKL');
SQL.Add('Where ID = '+ID+'');
 try
 open;
EditORTA.Text:=Query1.FieldByName('ORTA').AsString;
EditADI.Text:=Query1.FieldByName('AD').AsString;
   if not (Query1.FieldByName('BASLIK') as TBlobField).IsNull then begin
WordBaslik :=TBlobStream.Create(TBlobField(Query1.FieldByName('BASLIK')),bmRead);
RichBASLIK.Lines.Clear;
RichBASLIK.Lines.LoadFromStream(WordBaslik);
WordBaslik.Free;
  end;
     except
        on E:EInOutError do   begin
  MessageDlg('HATA! '+E.Message, mtError, [mbOk], 0);
   end;
end;
 try
    if not (Query1.FieldByName('ICERIK') as TBlobField).IsNull then begin
Wordicerik:=TBlobStream.Create(TBlobField(Query1.FieldByName('ICERIK')),bmRead);
RichICERIK.Lines.Clear;
RichICERIK.Lines.LoadFromStream(Wordicerik);
Wordicerik.Free;
  end;
     except
        on E:EInOutError do   begin
  MessageDlg('HATA! '+E.Message, mtError, [mbOk], 0);
     end;
   end;
  end;
 end;
{--------
TebligatGoster(ListView1.Selected.SubItems.Text);
----------}
Ne dersiniz ???

Basarılar
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Streamlerle çalışırken position a dikkat etmek çok önemli

Kod: Tümünü seç

MemStream.Clear;
   MemStream.Position := 0;
   TBlobfield(QUE_Kimlik.FieldByName('RESIM')).SaveToStream(MemStream);
   MemStream.Position := 0;
   TBlobfield(QUE_Diger.FieldByName('RESMI')).LoadFromStream(MemStream);
   MemStream.Clear;
   MemStream.Position := 0;
   UGSDBImage1.Invalidate;
yukarıda benim kullandığım bir kod kısmı var. Ben bunu resim için kullanıyorum. Blob alan binary olduğu için içine ne konulduğuna bakılmaz, dolayısı ile her şeyi yazıp okuyabilirsin.

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

hocam ilginize tesekkür ederim

biraz ugrastıktan sonra bu sekilde kaydetmeyi becerdim
acaba gereksizmi daha basit sekilde olurmu bilemedigim için
danısayım dedim kodlarıda oldugu gibi paste ettim

position ve clear i de eklerim
ve galiba? dogru yoldayım :lol:

Tesekkür eder hayırlı ve bereketli işler dilerim.
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

Merhabalar

yukarda db ye kaydettiklerimi worde aktarmam gerekiyor

yine stream kullanmadan olmadı düz yazı seklinde cıktı

stream kullanmakta hataya sebep oluyor

Kod: Tümünü seç

 var
   wrdSelection, wrd, wrdDoc: Variant;
   A: Tquery;
   BlobStream1 : TBlobStream;
 begin

  A:=TQuery.Create(self);
  A.DatabaseName:=STR_DATABASENAME;
  A.sql.add('SELECT *');
  A.sql.add('FROM AKL');
  A.sql.add('WHERE ID = 19');

  try
   A.Open;

   wrd := CreateOleObject('Word.Application');
   wrd.Visible :=TRUE;
   wrdDoc:=wrd.Documents.Add();
   wrdSelection := wrd.Selection;

   BlobStream1 :=TBlobStream.Create(A.Fieldbyname('BASLIK') as TBlobField, bmRead);

//wrdDoc.Range.InsertAfter(BlobStream1); hata

   wrdDoc.Range.InsertAfter('');

  finally
   BlobStream1.Free;
   A.Free;
end;
Filestream kullanarak dosya.doc olarak keydedebiliyorum ama
sadece bir alanı //BASLIK
3 alanı kaydetmem gerekiyor
// BASLIK,ORTA,ICERIK,
Filestream kullanarak 3 alanı bir araya getiremedim

bu alanları nasıl word e aktaracam yada word dosyası olarak kaydedicem
?
Sevgiler.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Abdulkadir kardeş, ben RichEdit icinde formatlı veri saklamak icin omrumde yaptıgım butun projelerde bile toplam bu kadar kod yazmadım :)
Şaka bir yana ben Infopower'in wwDBRichEdit ini kullanıp hiç bir kod da yazmıyorum. Zannedersem senin de DBRichEdit kullanman yeterli olur.... Bir koda yazmana gerek kalmaz....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Cevapla