Excel'den DBGrid'e alırken Tarih formatı adaptasyonu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ademiz
Üye
Mesajlar: 151
Kayıt: 30 Tem 2003 02:41
Konum: İstanbul
İletişim:

Excel'den DBGrid'e alırken Tarih formatı adaptasyonu

Mesaj gönderen ademiz »

Arkadaşlar Merhaba

Forumdaki Excelden DBGrid'e bilgi alma kodunu kullandım.Fakat Tarih olarak Excel'e export ettiğim bilgileri aşağıdaki kodla DBGrid'e alırken Tarih formatı uyuşmazlığı hatası veriyor.Ancak Excel'i açıp ordaki Tarihleri metin formatına çevirip tekrar import ettiğim zaman sorunsuz çalışıyor.

Şimdi size sormak istediğim.

Excel de var olan Tarih bilgilerini metine çevirdiğim zaman Tarih ler bozuluyor.Bunları düzeltmeye kalkmam nerdeyse mümkün değil.

Bu sorunu Aşağıdaki koda bir tarih ilavesimi çözer yoksa hiç uğraşmadan sadece (ben bilmiyorum) :( Exceldeki Tarih sutunlarını tarih formatları bozulmadan metine mi çevirmek?

Biraz karışık oldu ama sizler ne demek istediğimi anlamışsınızdır!..

Hepinize Saygılar

Kod: Tümünü seç

procedure TProEntSayForm.BitBtn3Click(Sender: TObject);
var 
    book:variant; 
    excel,sheet:variant; 
    satir, sutun:integer; 
    str:string; 
begin 
    excel := createOleObject('Excel.application'); 
    OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls'; 
    if opendialog1.Execute then 
    begin 
        book:= Excel.WorkBooks.Open(OpenDialog1.FileName); 
        try
            Screen.Cursor := crHourGlass;
            sheet := book.worksheets[1]; 
            for satir:=1 to 2500 do 
            begin 
                str := sheet.cells[satir, 1]; 
                if (str <> '') then 
                begin 
                    Update; 
                    MYBTable.Append;
                    for sutun:=1 to 30 do 
                        MYBTable.Fields[sutun-1].AsString :=sheet.cells[satir, sutun];
                    MYBTable.Post; 
                end; 
            end; 
            Excel.quit; 
            excel:=Unassigned; 
        finally 
            Screen.Cursor := crDefault; 
        end; 
    end;
end;
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Bir öneri tarih format lı hücreyi excel'den alırken tanıyabilirseniz yani if ExcelHücre = TarihBicimi then bunu diye bilirseniz direk dataya yazmadan değişkenler aracılığı ile tarih formatına dönüşüm yapabilirsiniz biraz karışık oldu galiba :)

Umarım Anlatabilmişimdir.

Kolay Gelsin.
İyi Geceler.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

Kod: Tümünü seç

for satir:=1 to 2500 do 
            begin 
                str := sheet.cells[satir, 1]; 
                if (str <> '') then 
                begin 
                    Update; 
                    MYBTable.Append; 
                    for sutun:=1 to 30 do 
                        MYBTable.Fields[sutun-1].AsString :=sheet.cells[satir, sutun]; 
                    MYBTable.Post; 
                end; 
            end; 
Anladığım kadarı ile excel den çektiğiniz bilgileri içindeki tarihleri yine tarih formatından dbgrid e çekmek istiyorsunuz.

yalnış anlamadı isem. şu şekilde yapabilirsiniz...

Kod: Tümünü seç

for sutun:=1 to 30 do 
                        MYBTable.Fields[sutun-1].AsString :=sheet.cells[satir, sutun]; 
                    MYBTable.Post; 
                end; 
Buradaki sütun işleminde tarih sütünunu ayrı tutun ve aktarırken Asstring ile degilde AsDateTime şeklinde kullanırsanız , Probleminiz düzelir.

yani sütun döngüsü haricinde tarih içinde bir döngü kullanın...

Kolay Gelsin
Cevapla