Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
İki tabloyu karşılaştırma ve tabloda boşluk doldurma
#1
Merhabalar, bir uygulama geliştiriyorum delphi 10.3 kullanıyorum verilerimi sqlite kullanarak alıyorum. 2 adet tablom var 1.tablomda 3 sütun var öğrenci numarası, adı ve yaşı. 2.tablomda da 3 sütun var ilk sütun öğrenci numarası ve bu sütun boş 2.sütun öğrenci adı ve ailelerinin iletişim bilgileri yazıyor 3.sütun kardeş bilgisi. Delphiye bu iki tabloyu stringrid üzerine aktarıyorum fakat 2.tablomda öğrenci numarası sütununu doldurmam gerekiyor elle yazmam çok zaman alacağı için bunu kodla yapmak istiyorum. 1.tablomdaki öğrenci ismini 2.tablomda bulduğunda karşısına gelen öğrenci numarası sütununu doldurmasını istiyorum her seferinde bir alt satırda arama yaparak bütün listeyi doldurmak istiyorum. Öğrenci isimelrinde büyük küçük harf farklılığı sorunuda var. Bir döngü oluşturmam gerek sanırım ama delphide çok yeniyim bir türlü yapamadım bu konuda fikir verebilecek yardımcı olabilecek arkadaşlarım varsa şimdiden çok teşekkûr ederim.
Cevapla
#2
Selamlar
Öncelikle öğrenci adının olduğu tabloyu döngü ile ilk kayıttan son kayıta kadar öğrenci adının olduğu alanı okuyarak bir değişkene atamakla başla. Daha sonra bu değişkendeki bilgiyi, 2 tablondaki alana yaz. Ancak, burada soru şu? 2. tabloda yazacağın öğrenci adı, doğru yere yazacak mı yoksa, farklı bir öğrenci satırına mı kaydedeceksin? Aramayı neye göre yapacaksın?
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Cevapla
#3
(24-09-2020, Saat: 11:44)wiseman Adlı Kullanıcıdan Alıntı: Selamlar
Öncelikle öğrenci adının olduğu tabloyu döngü ile ilk kayıttan son kayıta kadar öğrenci adının olduğu alanı okuyarak bir değişkene atamakla başla. Daha sonra bu değişkendeki bilgiyi, 2 tablondaki alana yaz. Ancak, burada soru şu? 2. tabloda yazacağın öğrenci adı, doğru yere yazacak mı yoksa, farklı bir öğrenci satırına mı kaydedeceksin? Aramayı neye göre yapacaksın?
 Okuyarak bir değişkene ata dediğinizi anlamayadım nasıl yapacağımı. Sorunuzu da tam anlayamadım aslında ama farklı bir satıra kaydetmiyeceğim. Aramayı comparetext ya da ansicontainstext gibi bir fonksiyonla yapmayı düşünmüştüm. İlk tablodaki öğrenci adını 2.tablodaki öğrenci adı ve aile bilgileri alanından bulmalı şeklinde düşündüm. Delphide çok yeniyim o yüzden anlayamayabiliyorum araştırarak ve sorarak yapmaya çalışïyorum kusura bakmayın.
Cevapla
#4
Merhaba,
İki sütun değerini karşılaştırma işleminde Lookup fonksiyonu içinde .ToUpper veya .ToLower string helper'ını kullanarak sonuca ulaşabilirsiniz. 
Önemli Not: .ToUpper veya .ToLower yerine UpperCase veya LowerCase function'larını kullanmayın. Sebebini şu konu başlığında açıklamıştım. https://www.delphican.com/showthread.php...7#pid25087

Örneğin;
var
 ogrNo: Variant;
begin
 while not tblDetay.Eof do
 begin
   ogrNo := tblAna.Lookup('OGRENCI_ADI', tblDetay.FieldByName('OGRENCI_ADI').AsString.ToLower, 'OGRENCI_NO');
   if not(VarIsNull(ogrNo)) then
   begin
     tblDetay.FieldByName('OGRENCI_NO').AsString := ogrNo[0];
     tblDetay.Post;
   end; //else begin  tblDetay.FieldByName('OGRENCI_NO').AsString := '-1'; tblDetay.Post; end;
   tblDetay.Next;
 end;
end;

Not: Yukarıdaki kod, bulamadığı kayıtlar için herhangi bir güncelleme yapmaz.  if not(VarIsNull(ogrNo)) then şartının else bölümüne bulumadığı kayıtlar için özel bir karakter update edip daha sonra güncellenmeyen kayıtlara hızlıca göz atabilirsiniz. Örn.  tblDetay.FieldByName('OGRENCI_NO').AsString := '-1';
DelphiCan'dır!
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi