Aranan tarih yoksa kayıt oluştur

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Aranan tarih yoksa kayıt oluştur

Mesaj gönderen Serhat »

Selam;

MonthCalendar klik ile MonthCalendar da seçili tarih yok ise yeni kayıt oluşturmak istiyorum.
Fakat MonthCalendar da seçili tarih databasede olsa da, olmasa da kayıt ekleniyor bu durumu nasıl çözebilirim...

Kod: Tümünü seç

procedure TForm2.MonthCalendar1Click(Sender: TObject);
begin
  try
    with Year do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select * FROM YEAR');
      SQL.Add('Where TARIH=:Tarih1');
      ParamByName('Tarih1').AsDate := MonthCalendar1.Date;
      Prepared := True;
      Open;
      if IsEmpty then
      begin
        Close;
        SQL.Clear;
        SQL.Add('Insert Into YEAR (TARIH)');
        SQL.Add(' Values (:TR)');
        ParamByName('TR').Value := MonthCalendar1.Date;
        ExecSQL;
      end;
    end;
  except
  end;
end;
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Aranan tarih yoksa kayıt oluştur

Mesaj gönderen ikra »

Select count diyerek rakamsal deger alin. Kesin sonuc döndürecektir.
kıdemsiz üye
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: Aranan tarih yoksa kayıt oluştur

Mesaj gönderen Kuri_YJ »

Selamlar,

Kod: Tümünü seç

INSERT INTO YEAR (TARIH)
SELECT :P1
FROM YEAR 
WHERE NOT EXISTS(SELECT 1 FROM YEAR WHERE TARIH=:P2)
Şeklinde bir Query yapın, Tarih her tıklandığında Tarih yoksa INSERT eder. P1 ve P2 sizin calendarınızdaki Tarih bilgisini yükleyin

ya da (Eğer Firebird Kullanıyorsanız)

Kod: Tümünü seç

UPDATE OR INSERT INTO YEAR(TARIH)
VALUES(:P1)
MATCHING (TARIH)
yine burada eğer ilgili tarih kaydı yoksa INSERT eder, varsa da UPDATE eder. Siz yine her Calendar'da tarih tıklandığında bu kodu işletirsiniz. Başınız ağrımaz :)

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Aranan tarih yoksa kayıt oluştur

Mesaj gönderen brs »

Databseye ektra TARIHX alanı oluştur sonrası sana kalmış...

Kod: Tümünü seç

procedure TForm2.MonthCalendar1Click(Sender: TObject);
var
  Str: String;
begin
  try
    DateTimeToString(Str, 'ddmmyyyy', MonthCalendar1.Date);
    with Year do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT * FROM YEAR Where TARIHX=:TX');
      ParamByName('TX').AsString := Str;
      Prepared := True;
      Open;
      if IsEmpty then
      begin
        Close;
        SQL.Clear;
        SQL.Add('Insert Into YEAR (TARIHX, TARIH)');
        SQL.Add(' Values (:TX, :TR)');
        ParamByName('TX').AsString := Str;
        ParamByName('TR').AsDate := MonthCalendar1.Date;
        ExecSQL;
      end;
    end;
  except
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Cevapla