word yazılarını veritabanına kaydetme (sybase)
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Kıdemli Üye
- Mesajlar: 489
- Kayıt: 13 Eyl 2003 09:10
- Konum: istanbul
- İletişim:
-
- Kıdemli Üye
- Mesajlar: 489
- Kayıt: 13 Eyl 2003 09:10
- Konum: istanbul
- İletişim:
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
cekerken
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
Ü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 }
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);
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
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...
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...

* http://delphiturkiye.gunduz.info Seminerler...

* http://www.hakmar.com.tr Kalite bir haktır...

-
- Kıdemli Üye
- Mesajlar: 489
- Kayıt: 13 Eyl 2003 09:10
- Konum: istanbul
- İletişim:
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.
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.
-
- Üye
- Mesajlar: 508
- Kayıt: 30 Oca 2004 10:49
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ı.
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ı.
-
- Kıdemli Üye
- Mesajlar: 489
- Kayıt: 13 Eyl 2003 09:10
- Konum: istanbul
- İletişim:
S.A
Dbrichedit üzerinden yapınca yine düz text formatında sonuc verdi
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.
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;
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.
- okurtdiken
- Üye
- Mesajlar: 21
- Kayıt: 11 May 2004 01:02
- Konum: ankara
- İletişim:
ü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.
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.
-
- Kıdemli Üye
- Mesajlar: 489
- Kayıt: 13 Eyl 2003 09:10
- Konum: istanbul
- İletişim:
Merhaba
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
dogru yoldayım ama dogrulamadımokurtdiken yazdı: Eğer sana çözüm olacağını düşünüyorsan bu kodlarıda gönderebilirim.
Ama sen richedit haric doğru yoldasın.

Sendeki kodlarıda Gönderebilirsen sevinirim Bir Gözatmak isterim
ilgine tesekkürler
a-kl@a-kl.com
abdulkadir1976@yahoo.com
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
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