Saat problemim

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
diksacli_prens
Üye
Mesajlar: 56
Kayıt: 20 Tem 2004 03:13
Konum: Beşiktas

Saat problemim

Mesaj gönderen diksacli_prens »

arkadaslar personellerin giriş ve cıkışlarını tutan bir veri tabanım var
ad, soyad , tarih, saat, durum diye durum kısmında giriş- cıkış bölümlerim
var.
yapmak istedegim tek sey durum giriş ise ve saat 9 dan büyükse tabloda o satırı farklı bir renkte göstermesi. daha önce buna benzer bi konuyo formdan yardım alarak yapmıştım. ama simdi saatte hata veriyor.
yaZDIGIM KOD
procedure TForm9.DBGrid5DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
durum: string;
saat : string;
begin
if gdSelected in State then exit;
durum := dbgrid2.DataSource.DataSet.FieldValues['Durum'];
saat := dbgrid2.DataSource.DataSet.FieldValues['Saat'];
saat:=TimeToStr(StrToTime(saat));
if (durum = 'Giriş') and ( saat >= 09:00)then
dbgrid1.Canvas.Brush.Color := $0054C7FE
else
dbgrid1.Canvas.Brush.Color := $00EBEBE2 dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
Yardımlarnız için sindiden tesekur ederim. admin abi aradım ama bullamadım formda varsa kusura bakma..
sevgi ve saygılarımla
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

dbgrid1.Canvas.Brush.Color := $00EBEBE2 dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
Düzeltilmişi

Kod: Tümünü seç

dbgrid1.Canvas.Brush.Color := $00EBEBE2;
dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
diksacli_prens
Üye
Mesajlar: 56
Kayıt: 20 Tem 2004 03:13
Konum: Beşiktas

öncelikle

Mesaj gönderen diksacli_prens »

slm huso abi öncelikle sitenin tasarımı mükammel.
evet düzeltmende hakklısın . kopyarken kaydırmısım. ama program söyle bi hata veriyo
[Error] Unit9.pas(228): Incompatible types: 'String' and 'Integer'
buyuk ihtimalle saat te bi yanlışlık var.
saat : degiskenini stringten time cevirmede
sevgilerimle
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

evet saat string değil double bir sayıdır. :wink:
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Saat değişkenin string ama sen karşılaştırma yaparken neidiyi belirsiz bir veri kullanıyorsun.

ipucu
if (durum = 'Giriş') and ( saat >= 09:00)then

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
diksacli_prens
Üye
Mesajlar: 56
Kayıt: 20 Tem 2004 03:13
Konum: Beşiktas

herkese tesekurler

Mesaj gönderen diksacli_prens »

procedure TForm9.DBGrid5DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
durum: string; //
saat : double;//saat bilgisi
begin
if gdSelected in State then exit;
durum := dbgrid2.DataSource.DataSet.FieldValues['Durum'];
saat := dbgrid2.DataSource.DataSet.FieldValues['Saat'];

if (durum = 'Giriş') and if( saat >= 09:00)then
dbgrid1.Canvas.Brush.Color := $0054C7FE
else
dbgrid1.Canvas.Brush.Color := $00EBEBE2;
dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);



end;
bu sekil yaptigimda ' : ' noktada hata veriyo bitürlü içinde cıkamadım
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Saat değişkenini TTime olarak tanımla
saat : TTime;//saat bilgisi değişkeni

Sonra iki adet string tanımla.
durum, Cevir: string; //String Değişkenler

Sonraki adımda
Cevir := '09:00'; //String değere atadığımız veriyi dönüşüm yapmamız için ilk adımız.

son olarak
if (durum = 'Giriş') and (saat >= StrtoTime(cevir)) Then

senaryon bu şekilde olmalı :wink:

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
diksacli_prens
Üye
Mesajlar: 56
Kayıt: 20 Tem 2004 03:13
Konum: Beşiktas

stringi time cevirme hatası

Mesaj gönderen diksacli_prens »

huseyin abi yardımların ıcın tesekur ederim yazdıklarını aynen uyguladım. programram hiç hata vermeden calişiyor. fakat ne zaman ilgili gridin oldugu sayfayı acmak istesem
project project1.exe raised exception class evarianttypecasterror with message ' could not convert variant of type (string) into type (double)'. process stopped. use step or run to continue
hatasını veriyor. hata stringi double cevirmeyle ilgili büyük ihtimalle yazdıgım kod aynen asagıdaki gibi
procedure TForm9.DBGrid5DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
durum, Cevir: string;
saat : TTime;
begin

if gdSelected in State then exit;
cevir := '09:00';
durum := dbgrid5.DataSource.DataSet.FieldValues['DURUM'];
saat := dbgrid5.DataSource.DataSet.FieldValues['Saat'];

if (durum = 'Giriş') and (saat >= StrToTime('cevir')) then
dbgrid5.Canvas.Brush.Color := $0054C7FE
else
dbgrid1.Canvas.Brush.Color := $00EBEBE2;
dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);



end;
acaba nerde yanlısımız var hala anlayamadım
sevgi ve saygılarımla
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Re: stringi time cevirme hatası

Mesaj gönderen mege »

showmessage(timetostr(strtotime('19:00')-strtotime('9:00')))

diksacli_prens yazdı:

Kod: Tümünü seç

procedure TForm9.DBGrid5DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
durum, Cevir: string; 
  saat : TTime;
begin

  if gdSelected in State then exit;
  cevir := '09:00';
  durum := dbgrid5.DataSource.DataSet.FieldValues['DURUM'];
  saat := dbgrid5.DataSource.DataSet.FieldValues['Saat'];

  if (durum = 'Giriş') and (saat >= StrToTime(cevir))  then
    dbgrid5.Canvas.Brush.Color := $0054C7FE
 else
 dbgrid1.Canvas.Brush.Color := $00EBEBE2;
dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);



   end;
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
diksacli_prens
Üye
Mesajlar: 56
Kayıt: 20 Tem 2004 03:13
Konum: Beşiktas

Re: stringi time cevirme hatası

Mesaj gönderen diksacli_prens »

mege yazdı:showmessage(timetostr(strtotime('19:00')-strtotime('9:00')))

diksacli_prens yazdı:

Kod: Tümünü seç

procedure TForm9.DBGrid5DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
durum, Cevir: string; 
  saat : TTime;
begin

  if gdSelected in State then exit;
  cevir := '09:00';
  durum := dbgrid5.DataSource.DataSet.FieldValues['DURUM'];
  saat := dbgrid5.DataSource.DataSet.FieldValues['Saat'];

  if (durum = 'Giriş') and (saat >= StrToTime(cevir))  then
    dbgrid5.Canvas.Brush.Color := $0054C7FE
 else
 dbgrid5.Canvas.Brush.Color := $00EBEBE2;
dbgrid5.DefaultDrawColumnCell(Rect, DataCol, Column, State);



   end;
evet mege sence buradaki hata ney.
('cevir ')seklinda yazmam mı' öylede denedim
sevgi ve saygılarımla
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

saat := dbgrid5.DataSource.DataSet.FieldValues['Saat'];

Problemin büyük bir olasılıkla yukarıda ifade ettiğim bu satırdan kaynaklanıyor bu satırı neden direk dataset ten almıyorsun DBGrid ile muhattap oluyorsun.

Saat := Dataset.FieldByName('Saat').AsDateTime;

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
diksacli_prens
Üye
Mesajlar: 56
Kayıt: 20 Tem 2004 03:13
Konum: Beşiktas

COk Cok tesekurler

Mesaj gönderen diksacli_prens »

huseyin abi ve mege ikininizede cok cok tesekur ederim
saat : ttime diye yaptigimda programın calişip sonradan hata vermesi
veritabanında saati varchar olarak göstermemmiş. time olarak yaptigimda hiç bi problem kalmadi
tekrar tesekurler
sevgi ve saygilarimla
Cevapla