Bazen Veritabanın'dan bilgileri Excel gibi yerlere kopyalamak isteyebiliriz. Bunun için Giridlerin hali hazırda zaten bu özellikleri mevcuttur. İstediğiniz gibi bu özelliğini açıp kapayabilirsiniz. Fakat bazen kopyalamak istediğiniz şeyler biraz kompleks olmaya başlayınca hangi verilerin ClipBoarda kopyalanacağını kontrol etmek isteyebilirsiniz.
Bu yazıda basit bir şekilde bir VeriTabanı verisinin ClipBoarda nasıl kopyalanacağını anlatmaya çalışacağım. Bunun için küçük bir örnek yaptım. Forma bir Grid ve birde Memo koydum. Böylece ClipBoarda kopyalanan her şeyi Memoyada da görebiliriz.
Pekli ClipBoardla neler yapılabilir. ClipBoarda resim,yazı ve diğer başka formatlarda birçok veriyi atıp bir yerden başka yere kopyala, kes, yapıştır işlemini yapabiliriz.
Bizim verilerimiz string tipinde ve bunu ClipBoarda kopyalamak için:
ClipBoard.AsText
Komutunu kullanacağız.
Öncelikle bir ClipBoard ve iki tanede StringList oluşturacağız. Birinci StringListte kolon başlıklarını tutarken ikincisindede kolon değerlerini kaydedeceğiz. Daha sonrada bu kayıtları ClipBoarda kopyalayacağız.
Bütün Kodlar:
procedure TForm1.Button1Click(Sender: TObject);
const
Bosluk = CHR(9);
var
AClipBoard : TClipBoard;
AStringList1,AStringList2 : TStringList;
ABookMarkList : TBookmarkList;
ABookMark : TBookmarkStr;
Indexs,Index2 : Integer;
DataSeti,KolonIsimleri :String;
begin
Try
AStringList1 := TStringList.Create;
AStringList2 := TStringList.Create;
AClipBoard := TClipBoard.Create;
ABookMarkList := TBookMarkList.Create(nil);
ABookMark := cdsSQL.Bookmark;
KolonIsimleri := '';
DataSeti := '';
If dbgSQL.SelectedRows.Count > 0 Then
Begin
For Indexs := 0 To cdsSQL.FieldCount -1 Do
Begin
AStringList1.Add(Trim(qryAdo.Fields[Indexs].FieldName));
KolonIsimleri := KolonIsimleri + Trim(cdsSQL.Fields[Indexs].FieldName) + Bosluk;
End;
AStringList2.Add(KolonIsimleri);
ABookMarkList := dbgSQL.SelectedRows;
For Indexs := 0 To ABookMarkList.Count -1 Do //dbgSQL.SelectedRows.Count- 1 Do
Begin
cdsSQL.Bookmark := ABookMarkList.Items[Indexs];
For Index2 := 0 To cdsSQL.FieldCount -1 Do
Begin
DataSeti := DataSeti + Trim(cdsSQL.FieldByName(AStringList1.Strings[Index2]).AsString) + Bosluk;
End;
AStringList2.Add(DataSeti);
DataSeti := '';
End;
Memo1.Lines.Add(AStringList2.Text);
End;
Finally
AClipBoard.AsText := AStringList2.Text;
AStringList1.Free;
AStringList2.Free;
End;
end;
Kodları incelerseniz yapının basit olduğunu görebilirsiniz. Verileri StringListlere kopyalamak için döngülerden seçili verilerde gezebilmek içinde BookMark nesnelerini kulladım.
Kodları ayrıntılı inceleyerek ve modifiye ederek veritabanından sadece size gerek yerleri kopyalabailirisiniz. Örneğin sadece ad ve soyadı yada herhangi bir analiz yapıyosanız cinsiyet , yaş ve araştırdığınız konu ile ilgili verileri kopyalamasını isteyebilirsiniz.
Okuduğunuz İçin Teşekkür Ederim
Hakan UÇAR
İstatistikçi ve Amatör Programcı
İçerikler Tamamen Ücretsiz Olup Özgün Anlatımdır Paylaşırken Kaynak Belirtiniz Lütfen.
Uygulamayı Yandex Diskimden indirebilirsiniz.
Soru Sormak ve Bilgi Almak İçin Mail Atınız: hakanucaar@yandex.com
0 yorum:
Yorum Gönder