Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
tablodaki kayıtları diziye aktarma
#1
Hayırlı günler.. en fazla 20-30 kayıt tutan bir tablodaki verileri query kullanarak bir diziye nasıl aktarabilirim? kayıtlar 30-40 karakterli Stringler olacak. diziyi short String veya String olarak tanımlamanın farkı var mı?
Cevapla
#2
(04-03-2019, Saat: 14:29)salih Adlı Kullanıcıdan Alıntı: Hayırlı günler.. en fazla 20-30 kayıt tutan bir tablodaki verileri query kullanarak bir diziye nasıl aktarabilirim? kayıtlar 30-40 karakterli Stringler olacak. diziyi short String veya String olarak tanımlamanın farkı var mı?

Merhabalar,

Dizi'ler ilgili hocamlarımızın daha önce paylaştığı konu mevcut.
Öncelikle sizlere tavsiyem, incelemeniz ve ardından denemelerinizi yapıp
tekrar destek almak olacaktır.

http://www.delphican.com/showthread.php?...%B1m%C4%B1

Dizi yapısını öğrenip daha sonra while ile SQL'den dönen sonuşları yazdırmak olacaktır.


Diğer bir örnek ise,
sonuçta neye ulaşmak istediğinizi tam olarak bilmediğim için,
işinizi çözebilecek diğer bir yöntem "MemoryTable/Virtaultable"
inceleyebilirsiniz.


Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#3
İşlemi yapamamamın nedeni dizilerden ziyade query kontrolu hakkındaki bilgimin eksikliğinden kaynaklanıyor. query'den bir fielddeki kayıtlara tek tek ulaşamadığım için diziye aktaramadım. Bu konu hakkında biraz araştırma da yaptım ancak tam istediğim gibi bir sonuca ulaşamadım. Veya anlamadım. Biraz basit bir problem olabilir ancak bilen biri yardımcı olursa sevinirim. veya query hakkında da bir paylaşım olursa faydalı olur.
Cevapla
#4
(04-03-2019, Saat: 15:51)salih Adlı Kullanıcıdan Alıntı: İşlemi yapamamamın nedeni dizilerden ziyade query kontrolu hakkındaki bilgimin eksikliğinden kaynaklanıyor. query'den bir fielddeki kayıtlara tek tek ulaşamadığım için diziye aktaramadım. Bu konu hakkında biraz araştırma da yaptım ancak tam istediğim gibi bir sonuca ulaşamadım. Veya anlamadım. Biraz basit bir problem olabilir ancak bilen biri yardımcı olursa sevinirim. veya query hakkında da bir paylaşım olursa faydalı olur.

Merhabalar,

SQL Örnek ve açıklamalar için;
http://www.sqlkodlari.com/04-sql-select-kullanimi.asp incelemenizi tavsiye ederim.

- Hangi sürüm IDE kullanıyorsunuz?
- Hangi DB'yi kullanıyorsunuz?
- Tam olarak ne yapmak istediğinizi açık/net belirtin lütfen.
- Yazdığınız SQL kod örneğini paylaşın lütfen.


Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#5
Öncelikle, belirtmediğin için ADOQuery kullandığını , AdoConnection nesnesine bağladığını ve bir butona basınca sorgudaki alanları diziye aktarmak istediğini varsayıyorum:
tableda şu şekilde olsun,adı da telefon olsun:
id ------ AD  ------- SOYAD ---- TELEFON 
1         ALİ           YILMAZ         12345
procedure TForm34.Button1Click(Sender: TObject); // butonun onclik olayının başladığı yer
var
dizi:array[0..3] of string; // 4 elemanlı dizi adında ve string tipinde bir dizi değişken tanımladım
i:integer;                  // döngü için kullanacağım değişken
begin
memo1.Lines.Clear;          // diziye aktardığım değişkenleri memo bileşenine atıp göstermek için memo1 adında bir memo nesnesi ekledim
with ADOQuery1 do           // with deyimi basitçe: aynı nesne isimlerini yazarak ulaştığımız nesne özelliklerini bir sefer yazarak ulaşmamızı sağlayan bir deyim
 begin                     // sürekli ADOQuery1.close; ADOQuery1.sql.add; demek yerine bu yapıyı kullanmak; okur-yazarlığı(!) arttırıyor.
   close;
   sql.Clear;
   sql.Add(('select * from telefon'); // telefon tablomdaki tüm kayıtları getirdim
   open
 
while not eof do   // table daki herbir veriyi değişkene atıp yazdırmak için "select" ifadesi ile seçtiğim verilerin her satırına ulaşmak ve bitince döngüden çıkmak için while döngüsü kullandım
begin
for i := 0 to 4 do // dizimdeki eleman sayısı kadar bir döngü açtım -ki dizinin her bir elemanına tablomdaki değerleri atayayım
   begin
     dizi[i]:=Fields.Fields[i].AsString; // basitçe tablomdaki ilk alan yani "id" fields[0], ikinci alan yani "AD" fields[1]... şeklinde (senin asıl sorduğun yer)
                                                   // döngümdeki alınan sayı yani "i" nin aldığı değere göre tablomdaki alanları dizideki yerlerine yerleştirdim
    memo1.Lines.Add(dizi[i]); //dizimdeki değerleri memo nesnesinde gösterdim
   end;
   next;
  end;
end;




Sürçü lisan ettimse affola. Ustalar belki daha okunur ve anlaşılır bi kod verebilir. Bendekiler bu kadar Smile Benim gibi yeni öğrenen biri olduğunuzu düşünerek bu şekilde anlattım.
Cevapla
#6
(04-03-2019, Saat: 18:12)forumcuali Adlı Kullanıcıdan Alıntı: id ------ AD  ------- SOYAD ---- TELEFON 
1         ALİ           YILMAZ         12345

     dizi[i]:=Fields.Fields[i].AsString;


 

Cevap için çok teşekkür ederim. Yukarıdaki kod field isimleri arasında dolaşıyor. ben sadece AD fieldindeki kayıtları almak istiyorum. Yani ALİ,VELİ,AHMET... diye kayıtların gelmesini istiyorum. Bir  de diziyi dinamik tanımladım. AD fieldindeki kayıtların sayısına nasıl ulaşabilirim? Ona göre dizinin boyutunu ayarlayayım.

(04-03-2019, Saat: 16:08)hi_selamlar Adlı Kullanıcıdan Alıntı: Merhabalar,

SQL Örnek ve açıklamalar için;
http://www.sqlkodlari.com/04-sql-select-kullanimi.asp incelemenizi tavsiye ederim.

- Hangi sürüm IDE kullanıyorsunuz?
- Hangi DB'yi kullanıyorsunuz?
- Tam olarak ne yapmak istediğinizi açık/net belirtin lütfen.
- Yazdığınız SQL kod örneğini paylaşın lütfen.


Kolay gelsin.
10.2 Tokyo kullanıyorum. SQL Server 2014 kullanıyorum. En fazla 15-20 kayıt tutacak olan bir tablodaki tüm kayıtları bir diziye aktarmak istiyorum. Field ve dizi String olacak. Kodum 

:
var
kategori : Array of String;
.
.
 SetLength(kategori,frmMain.qryKategori.RecordCount);          
 k := 0;
 while not frmMain.qryKategori.eof do
 begin
   kategori[k] := frmMain.qryKategori.Fields[1].Value;
   showMessage(kategori[k]);
   k := k+1;
 end;
Cevapla
#7
(04-03-2019, Saat: 18:12)forumcuali Adlı Kullanıcıdan Alıntı: id ------ AD  ------- SOYAD ---- TELEFON 
1         ALİ           YILMAZ         12345

     dizi[i]:=Fields.Fields[i].AsString;

Cevap için çok teşekkür ederim. Yukarıdaki kod field isimleri arasında dolaşıyor. ben sadece AD fieldindeki kayıtları almak istiyorum. Yani ALİ,VELİ,AHMET... diye kayıtların gelmesini istiyorum. Bir  de diziyi dinamik tanımladım. AD fieldindeki kayıtların sayısına nasıl ulaşabilirim? Ona göre dizinin boyutunu ayarlayayım.

query deki sadece "AD"  kısmını alacaksan "Fields.Fields[i].AsString;"  yerine "query1.fieldbyname('AD').AsString" de kullanabilirsin. daha anlaşılır olur.

Kayıt sayısını bulmak içinde zaten yazmışsın. Queryi çalıştırdıktan sonra query.RecordCount sana kayıt sayısını verir. Burda ince bi nokta: for döngsünü eğer 0'dan başlatırsan(-ki genelde öyle olur.Çünkü listeler, griddeki alanlar vb. nesneler hep 0'dan başlar) Query1.RecordCount-1 şeklinde girmen gerekir ki " list index out of bounds (-1)" vb. bir hata ile karşılaşmayasın.

dinamik diziye attiktan sonra "low (dizi)" deyip dizinin ilk elemanına ait index(sayısı); "high(dizi)" deyip son elamana ait index(sayısı) getirilebilir
buna göre döngü veya elaman sayısı belirlenebilir.

dizilerle ilgili @uparlayan  hocamın nefis bir makalesi var : http://www.delphican.com/showthread.php?tid=1689 (Kendisine burdan çok çok teşekkür ediyorum)
Burda dinamik, static, multidimension,open dizilerle ilgili bilimum bilgileri bulabilirsin.
Cevapla
#8
Aslında burada sorulacak bir soru var. O da : Neden ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  harf olan kayıtları görmezden gelme ercanskose 9 670 30-01-2024, Saat: 11:26
Son Yorum: elixir84
  Sadece Son Kayıtları Listeleme gonulali 4 798 09-05-2023, Saat: 17:01
Son Yorum: gonulali
  Delphi 7 Excel'e Veri Aktarma mahone 6 1.051 02-05-2023, Saat: 08:34
Son Yorum: COMMANDX
  Tarayıcıda Taranan Textleri Excele Aktarma bünyamin68 1 509 08-12-2022, Saat: 00:28
Son Yorum: engerex
  Delphi de Bugün Dün yarın Haftalık Aylık Kayıtları Sorgulama erdemtaner 7 2.153 26-10-2022, Saat: 14:01
Son Yorum: erdemtaner



Konuyu Okuyanlar: 1 Ziyaretçi