Excell Aktarma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: Excell Aktarma

Mesaj gönderen ozcank »

Bu şekilde denediğim de ;

Kod: Tümünü seç

    Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].AsFloat;

//         Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].Value;
//         if Col + 1 >= 4 then
//         Sheet.Cells[Row, Col + 1].NumberFormat := '#,##0.0000';
//       end;
//////////////////
 if Col + 1 >= 4 then
  begin
//    Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].AsFloat;
    Sheet.Cells[Row, Col + 1].NumberFormat := '#,##0.0000';
  end
  else
  begin
    Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].Value;
  end;
  End;
//////////////////
       Next;
       Inc(Row); // Row := Row + 1;
     end;
Bu hatayı veriyor ;
---------------------------
Debugger Exception Notification
---------------------------
Project EMNTMENU.exe raised exception class EConvertError with message ''SAR-HAT GIDA MAD.TİC.VE NAK.' is not a valid floating point value'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


Bu şekilde de denediğim de ;

Kod: Tümünü seç


//         Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].AsFloat;
//         Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].Value;
//         if Col + 1 >= 4 then
//         Sheet.Cells[Row, Col + 1].NumberFormat := '#,##0.0000';
//       end;
//////////////////
 if Col + 1 >= 4 then
  begin
    Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].AsFloat;
    Sheet.Cells[Row, Col + 1].NumberFormat := '#,##0.0000';
  end
  else
  begin
    Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].Value;
  end;
  End;
//////////////////
       Next;
       Inc(Row); // Row := Row + 1;
     end;
     Sheet.Cells[Row, 4].Formula := '=SUM(D3:D' + InttoStr(Row - 1) + ')';

Bu hatayı veriyor;
---------------------------
Debugger Exception Notification
---------------------------
Project EMNTMENU.exe raised exception class EConvertError with message ''D00000000793008' is not a valid floating point value'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Excell Aktarma

Mesaj gönderen Lord_Ares »

ozcank yazdı:hayır 1.56 gözüküyor hücre biçimlendir de genel
Paşam şöyle bişey denermisin, hücre biçimlendirde genel değil de isteğe uyarlanmış kısmından birini seçip dene veya sayı kısmını seçip ondalık basamak ayracını 4 yap ve binlik ayraç kullan de. Gelen değerleri yukarı veya aşağıya yuvarlıyor olabilir. Yuvarlamadığından emin olup kodunu o şekilde test et.
SAR-HAT GIDA MAD.TİC.VE NAK.' is not a valid floating point value'.
Son gönderdiğin hata float değeri olan alana stringi tipte veri yazdığın için oluyor.
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: Excell Aktarma

Mesaj gönderen ozcank »

DBGrid1 ekranın da 1.5625
Excel de sağ tık hücrelere baktığımda Sayı / Ondalık ayracı işaretli ve ondalık basamağı 4 olarak tanım lı buna rağmen 1.5600 gösteriyor.
hücre içeriği ise 1.56
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: Excell Aktarma

Mesaj gönderen ertank »

Kodu aşağıdaki şekilde değiştirerek deneyebilir misiniz?

Kod: Tümünü seç

  if Col + 1 >= 4 then
  begin
    case DBGrid1.Fields[Col].DataType of
      ftInteger, ftFloat:
      begin
        Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].AsFloat;
        Sheet.Cells[Row, Col + 1].NumberFormat := '#,##0.0000';
      end;
      else
      begin
        Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].Value;
      end;
    end;
  end;
Yukarıdaki kod ile sorununuz devam ederse eğer bir şekilde aktarılan veri sorunlu diyebiliriz. Ya kullandığınız DBGrid bileşeni adı hatalı, ya da başka birşey. Sorun hiç akla gelmeyecek bir yerde de olabilir. Biraz daha dikkatli incelemenizi önereceğim.

Hangi alan değeri hatalı geliyor? Bu alan Query/Table bileşeni içine dizayn zamanında tanımlanmış mı? Dizayn zamanı tanımlanmış ise özelliklerinde decimal ve precision için bir değer yazılmış mı? Çalışma zamanında Query/Table alanları ile ilgili özelliklerde değişiklikler yapılıyor mu? Bu ve benzeri noktaları kontrol etmenizde fayda var.
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: Excell Aktarma

Mesaj gönderen ozcank »

Ertank kardeşim sonuç aynı dediğiniz gibi yaptım. Bağlantı versem birlikte bakmamız mümkün mü ?

Kod: Tümünü seç

if Col + 1 >= 4 then
begin
case DBGrid1.Fields[Col].DataType of
ftInteger, ftFloat:
begin
Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].AsFloat;
Sheet.Cells[Row, Col + 1].NumberFormat := '#,###0.0000';
end;
else
begin
Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].Value;
end;
end;
end;
end;
Next;
Inc(Row); // Row := Row + 1;
end;
Sheet.Cells[Row, 4].Formula := '=SUM(D3:D' + InttoStr(Row - 1) + ')';
Sheet.Cells[Row, 5].Formula := '=SUM(E3:E' + InttoStr(Row - 1) + ')';

Cevapla