Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Database random
#1
Merhaba; databaseden rastgele 2 adet veri çekeceğim, 1. veriyi çekmede sorun yok 2. veriyi nasıl çekebilirim?

  TimerListele.Enabled := False;
  With Form1.QSip do
  begin
    Connection := Form1.FDConnection;
    Close;
    SQL.Clear;
    SQL.Add('Select * From KALIPLAR Where KALIP=:KP Order By Rand(ID) Limit 2');
    ParamByName('KP').AsInteger := 1;
    Prepared := True;
    Open;
    if Not IsEmpty then
    begin
      LabelLeft.Text := FieldByName('KALIP').AsString; // 1. veri

       LabelRight.Text := FieldByName('KALIP').AsString;// 2. veri

    end
Hayat bazen güzel olabiliyor.
Cevapla
#2
(05-03-2018, Saat: 19:38)Dostk Adlı Kullanıcıdan Alıntı: Merhaba; databaseden rastgele 2 adet veri çekeceğim, 1. veriyi çekmede sorun yok 2. veriyi nasıl çekebilirim?

  TimerListele.Enabled := False;
  With Form1.QSip do
  begin
    Connection := Form1.FDConnection;
    Close;
    SQL.Clear;
    SQL.Add('Select * From KALIPLAR Where KALIP=:KP Order By Rand(ID) Limit 2');
    ParamByName('KP').AsInteger := 1;
    Prepared := True;
    Open;
    if Not IsEmpty then
    begin
      LabelLeft.Text := FieldByName('KALIP').AsString; // 1. veri

       LabelRight.Text := FieldByName('KALIP').AsString;// 2. veri

    end

  TimerListele.Enabled := False;
  With Form1.QSip do
  begin
    Connection := Form1.FDConnection;
    Close;
    SQL.Clear;
    SQL.Add('Select * From KALIPLAR Where KALIP=:KP Order By UUID() Limit 2');
    ParamByName('KP').AsInteger := 1;
    Prepared := True;
    Open;
    if Not IsEmpty then
    begin
      LabelLeft.Text := FieldByName('KALIP').AsString; // 1. veri
      LabelRight.Text := FieldByName('KALIP').AsString;// 2. veri
    end

Hangi veritabanını kullandığınızı yazmamışsınız. MySQL için UUID(), MS-SQL Server için NEWID(), Oracle için SYS_GUID() fonksiyonunu kullanabilirsiniz.
WWW
Cevapla
#3
Sorun yanlış anlaşıldı sanırım, veritanabı olarak olarak sqlite kullanıyorum.

Rastgele bir kayıt alabiliyorum, ikinci kayıttı aynı kodda nasıl alabilirim?
Hayat bazen güzel olabiliyor.
Cevapla
#4
Merhaba,
SQLite veri tabanında limit ile belirlenen kayıt sayısının başlangıç değeri OffSet ifadesi ile bildirilir. 
Limit ile 2 kayıt istediğinizi bildirmişsiniz. Offset ile de kayıt başlangıç numarasını vermelisiniz. Elde edilen kayıt kümesindeki ilk kaydın offset'ı sıfırdır. Hangi kayıttan itibaren iki kayıt almak istediğinizi belirtmeniz yeterli olacaktır.
Ör. Limit 2 offset 0 ifadesi ilk iki kaydı DataSet olarak döndürecektir.
DelphiCan'dır!
Cevapla
#5
(05-03-2018, Saat: 21:16)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
SQLite veri tabanında limit ile belirlenen kayıt sayısının başlangıç değeri OffSet ifadesi ile bildirilir. 
Limit ile 2 kayıt istediğinizi bildirmişsiniz. Offset ile de kayıt başlangıç numarasını vermelisiniz. Elde edilen kayıt kümesindeki ilk kaydın offset'ı sıfırdır. Hangi kayıttan itibaren iki kayıt almak istediğinizi belirtmeniz yeterli olacaktır.
Ör. Limit 2 offset 0 ifadesi ilk iki kaydı DataSet olarak döndürecektir.

Fesih bey, ilginize teşekkür ederim, biraz daha açıklayıcı bilgi verebilir misiniz?
Hayat bazen güzel olabiliyor.
Cevapla
#6
(06-03-2018, Saat: 16:01)Dostk Adlı Kullanıcıdan Alıntı:
(05-03-2018, Saat: 21:16)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
SQLite veri tabanında limit ile belirlenen kayıt sayısının başlangıç değeri OffSet ifadeyi ile bildirilir. 
Limit ile 2 kayıt istediğinizi bildirmişsiniz. Offset ile de kayıt başlangıç numarasını vermelisiniz. Elde edilen kayıt kümesindeki ilk kaydın offset'ı sıfırdır. Hangi kayıttan itibaren iki kayıt almak istediğinizi belirtmeniz yeterli olacaktır.
Ör. Limit 2 offset 0 ifadesi ilk iki kaydı DataSet olarak döndürecektir.

Fesih bey, ilginize teşekkür ederim, biraz daha açıklayıcı bilgi verebilir misiniz?

Merhaba,
Random ile birlikte Limit 2 kullandığınızda zaten iki kayıt elde etmiş olacaksınız. Kullanım şekli aşağıdaki gibi olmalıdır. 
Select * From KALIPLAR Where KALIP=:KP ORDER BY RANDOM() LIMIT 2
Where satırında vermiş olduğunuz şart sonucunda iki veya daha fazla kayıt elde edilmesi durumunda, iki kayıt listelenecektir.
(Bu satırda şartınız yalnızca bir kayıt içeriyorsa, tabi ki tek bir kayıt listelersiniz. )

Kod kısmı da aşağıdaki gibi olabilir.
  QSip.SQL.Text :=
   'Select * From KALIPLAR Where KALIP=:KP ORDER BY RANDOM() LIMIT 2';
 QSip.ParamByName('KP').AsInteger := 1;
 QSip.Open;
 LabelLeft.Text := QSip.FieldByName('KALIP').AsString;
 QSip.Next;
 LabelRight.Text := QSip.FieldByName('KALIP').AsString;
 QSip.Close;
DelphiCan'dır!
Cevapla
#7
(06-03-2018, Saat: 16:01)Dostk Adlı Kullanıcıdan Alıntı:
(05-03-2018, Saat: 21:16)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
SQLite veri tabanında limit ile belirlenen kayıt sayısının başlangıç değeri OffSet ifadeyi ile bildirilir. 
Limit ile 2 kayıt istediğinizi bildirmişsiniz. Offset ile de kayıt başlangıç numarasını vermelisiniz. Elde edilen kayıt kümesindeki ilk kaydın offset'ı sıfırdır. Hangi kayıttan itibaren iki kayıt almak istediğinizi belirtmeniz yeterli olacaktır.
Ör. Limit 2 offset 0 ifadesi ilk iki kaydı DataSet olarak döndürecektir.

Fesih bey, ilginize teşekkür ederim, biraz daha açıklayıcı bilgi verebilir misiniz?



 
   begin
      while Not Eof do
      begin
        Next;
        if FieldByName('ID').AsInteger Mod 2 = 0 then
        begin
          LabelLeft.Text := FieldByName('ID').AsString;
        end
        else
        begin
          LabelRight.Text := FieldByName('ID').AsString;
        end;
Cevapla
#8
merhaba;

Mod 2 = 0 ile denemeler yapmıştım ama bir türlü doğru sonucu alamamıştım.
sanırım SQL.Add('Select * From KALIPLAR Where KALIP=:KP Order By Rand(ID) Limit 2'); burada hata yapıyordum.


Teşekkür ederim.
Hayat bazen güzel olabiliyor.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  fastreport şablonu database e kayıt ercanskose 11 3.093 18-02-2025, Saat: 17:10
Son Yorum: akuyumcu63
Rainbow Could Someone Give me Advice on How to Gain Insights into Effective Database Manageme Jazlyn 0 557 22-07-2024, Saat: 13:59
Son Yorum: Jazlyn
  Office programları olmayan PC'den Access database erişimi. enigma 1 716 04-03-2024, Saat: 13:47
Son Yorum: gbg
  random date erdogan 2 1.481 04-01-2023, Saat: 21:52
Son Yorum: erdogan
  Database boş alan silme Altıner 4 1.777 07-10-2022, Saat: 20:40
Son Yorum: mcuyan



Konuyu Okuyanlar: 1 Ziyaretçi