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:

Mesaj gönderen abdulkadir »

Hay allah dbrichedit diye bir bilişen vardı dimi hiç aklıma gelmedi ve düşünemedim.
hemen deneyecegim

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

Mesaj gönderen abdulkadir »

S.A
Üzerinden sular seller gecmiş olsada
yogun iş temposundan fırsat buldukca ilgilenebiliyorum

ve bu konu henüz sonuclanmadıgı için yen bir baslık acmak yerine yine burdan devam etmeyi tercih ettim

gelelim soruna

Fahrettin abinin dedigi gibi DBRichEdit kullanarak formatlı yazıları yazıp vt ye kaydediyorum güncelliyorum . bu sorun asıldı ama bunları worde yazamıyorm
rtf olarak kaydedemiyorum
aslında kaydediyorum ama formatlı cıkmıyor

cıktı aynen söyle

Kod: Tümünü seç

{\rtf1\ansi\ansicpg1254\deff0\deflang1055{\fonttbl{\f0\fnil MS Sans Serif;}}
\viewkind4\uc1\pard\f0\fs16 
\par }
cekerken

Kod: Tümünü seç

    WrdApp.Selection.TypeParagraph;
    WrdApp.Selection.TypeText(Text :=FieldByName('BASLIK').AsVariant);
    WrdApp.Selection.TypeParagraph;
    WrdApp.Selection.TypeText(Text :=FieldByName('ORTA').AsVariant);
    WrdApp.Selection.TypeParagraph;
    WrdApp.Selection.TypeText(Text :=FieldByName('ICERIK').AsVariant);
AsString olarakta aynı sonucu veriyor
Yine unuuttugum basit birsey varsa bana hatırlatın lütfen

ilk defa yaparkenmi bu işler olmuyor acemilikmidir nedir bu

Tesekkürler hayırlı işler
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Veritabanında formatlı olarak tutmayı DBRichedit ile başarmamızdaki püf nokta bu componentin gerekli kontrol karakterlerini de bu alan icinde tutmasıdır... DBRichedit componenti bu control karakterlerini tanımakta ve bunları formatlı olarak gostermektedir... Yani duz bir string kaydetmiş olmadık veritabanına bir suru kontrol karakteri de var etrafında....

Benim bilmediğim başka teknikler de olabilir ama ilk aklıma gelen bu kontrol karakterlerini tanıyan DBRichEdit uzerinden bunu word'e aktarmak... Yani dogrudan tablodan okumayıp DBRichedit'in text gibi bir ozelliğinden okuyup ki umuyorum ki bu şekilde formatları da okumuş olabiliriz.... oradan word'e aktarabilirsin...

Kolay gelsin...
* 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 »

Fahrettin abi tesekkürler
word ile 10 15 adet mektup olusturdum vt kaydettim bu mektupların adını ve id alanlarını
bir menünün caption ve tagına atadım maksadım menuden secilen tag nolu mektup direk worde aktarılsın

dediginiz gibi dbrichedit üzerinden olabilir ama arka planda yapmak gerekecek bu sekilde yapmak aklıma geldi ama sacma deyip denemedim bile başka cözüm aradım
ayrıca 3 adet alan var yani 3 adet dbricheditten kullanıyorum

baska cözüm bulamassam arka planda da olsa yapmaya calısacagım

tesekkür ederim.
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Mesaj gönderen shadowmann »

burada amaç veritabanındaki yazıları kullanıcının renklendirmesi vs ise bir veritabanına renkleri vs kaydedilip (kullanıcılar renk yazıtipi ayarlamaları yaptırıp) program kullanımı esnasında kullanıcının seçtigi profile göre görüntüleme kısmında bunlar uygulanabilir diye düşünüyorum.
yazılar veritabanında yine aynı şekilde kalacaktır.

{\rtf1\ansi\ansicpg1254\deff0\deflang1055{\fonttbl{\f0\fnil MS Sans Serif;}}
\viewkind4\uc1\pard\f0\fs16
\par böyle görünmesinin nedenini mepc yazmıştı.
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

S.A

Dbrichedit üzerinden yapınca yine düz text formatında sonuc verdi

Kod: Tümünü seç

{
    DBR_BASLIK: TDBRichEdit;
    DBR_ORTA: TDBRichEdit;
    DBR_ICERIK: TDBRichEdit;
}

procedure TMukelleflerForm.Button1Click(Sender: TObject);
var
  wrdSelection, wrdApp, wrdDoc: Variant;
  Q: Tquery;
begin
  Q := TQuery.Create(Nil);
  Q.DatabaseName := STR_DATABASENAME;
  Q.SQL.Clear;
  Q.sql.add('SELECT *');
  Q.sql.add('FROM AKL_TEBLIGAT');
  Q.sql.add('WHERE ID = 7');
  try
    Q.Open;
      try
      wrdApp := CreateOleObject('Word.Application');
      wrdApp.Visible := TRUE;
      wrdDoc := wrdApp.Documents.Add();
      wrdSelection := wrdApp.Selection;

    with TebligatlarForm do begin
      DBR_BASLIK.Text := Q.Fieldbyname('BASLIK').AsVariant;
      DBR_ORTA.Text   := Q.Fieldbyname('ORTA').AsVariant;
      DBR_ICERIK.Text := Q.Fieldbyname('ICERIK').AsVariant;

      wrdDoc.Range.InsertAfter(DBR_BASLIK.Text);
      wrdDoc.Range.InsertAfter(DBR_ORTA.Text);
      wrdDoc.Range.InsertAfter(DBR_ICERIK.Text);
       end;
        except on E: EInOutError do begin
        MessageDlg('HATA! ' + E.Message, mtError, [mbOk], 0);
        Exit;
      end;
       end;
      finally
      Q.Close;
    Q.Free;
  end;
 end;
Html tagları degilki kendi code encode mi yazayım bir yıgın paramatre var bu işin bir yolu olmalı ama ne Ya benim bilmedigim yada basaramadıgım

Takıldım kaldım şimdi ne yapmalıyım yardımlarınızı bekliyorum
bu işlemi yapabilen arkadaslara duyurulur.

Herkese basarılar,sevgiler.
Kullanıcı avatarı
okurtdiken
Üye
Mesajlar: 21
Kayıt: 11 May 2004 01:02
Konum: ankara
İletişim:

Mesaj gönderen okurtdiken »

üstad ben daha yazdığım bir programda buna benzer bir yapı kullandım.

ben programda OleContainer kullandım.
kullanıcı word'de dosyasını oluşturuyor daha sonra programdaki bir butonla bu bilgiyi veritabanına kaydediyor.
Daha sonra kullanıcı veriler arasında gezerken veritabanındaki bilgiler OleContainer içinde görüntüleniyor. Eğer isterse bu verileri değiştirebiliyor.
Daha sonrasında da benim bu word dosyası üzerinde işlem yaptırmam gerekiyor. bu esnada ben word nesnelerini kullandım. visible özelliklerini false yapıp kullandığın zaman word dosyası üzerinde her türlü işlemi yapıyorsun ve kullanıcı bunları görmüyor. Daha sonra kullanıcıya istediğin word dosyasını sunuyorsun. Üstelik ne karakterlerde nede bir başka özellikde herhangi bir bozulma olmuyor. Ben bu işle çok uğraştım. RichEdit veya DBRichEdit kesinlikle çözüm değil. Hatta bununla ilgili bir çok 3. parti bileşenide denedim ama olmadı. Eğer .doc dosyalarıyla çalışacaksan en iyi yöntem OleContainer ve office bileşenleri kullanmak. Tabi ben bu söylediklerimi Paradox ve InterBase üzerinde yaptım. Sybase ile denemedim. Kodlarda senin yazdığın kodlar kadar uzun değil. Ama şunu biliyorum ki burda kullandığın veritabanı önemi değil.

Eğer sana çözüm olacağını düşünüyorsan bu kodlarıda gönderebilirim.
Ama sen richedit haric doğru yoldasın.
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

Merhaba
okurtdiken yazdı: Eğer sana çözüm olacağını düşünüyorsan bu kodlarıda gönderebilirim.
Ama sen richedit haric doğru yoldasın.
dogru yoldayım ama dogrulamadım :lol: Henüz bir çözüm bulamadım
Sendeki kodlarıda Gönderebilirsen sevinirim Bir Gözatmak isterim

ilgine tesekkürler

a-kl@a-kl.com
abdulkadir1976@yahoo.com
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

ornegini bizde gorebilirmiyiz,
tesekkurler
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

var
BlobStream: TABSBlobStream;
rstream1: TMemoryStream;
begin
ABSTable1.Open;
ABSTable1.edit;
rstream1:=TMemoryStream.Create;
RichEdit1.Lines.SaveToStream(rstream1);
BlobStream := TABSBlobStream(ABSTable1.CreateBlobStream(ABSTable1.FieldByName('notmetni'),bmWrite));
rstream1.Position := 0;
BlobStream.CopyFrom(rstream1,rstream1.Size);
BlobStream.Free;
ABSTable1.Post;


seklinde dogru oluyor kaydettim rtf olarak db ye belki yardımcı olur
Cevapla