Yanlış türde bir değer kullanıyor Hatası saçmalığı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Dobreli
Üye
Mesajlar: 9
Kayıt: 31 Ara 2017 01:49

Yanlış türde bir değer kullanıyor Hatası saçmalığı

Mesaj gönderen Dobreli » 30 Ara 2018 06:16

Ödevim için gerçekleştirdiğim kafe otomasyonunda masa1,masa2,masa3 butonlarım var. Bunlar içinde diğer sayfaya aktarılacak kodlar aşağıdaki örnekteki gibi bulunmakta ve hepsi aynı kodu içermesine rağmen masa1-masa3 de hata alırken masa2 de '...yanlış türde değer girdiniz' hatası almıyorum. Devamındaki işlemler tamamen aynı. Masa 2 deki ve masa 1 deki kodları örnek olması amacı ile aşağı bırakıyorum. Gerekli diğer kısımları gerekirse atarım.
Veri tabanı kontrollerini yaptım sorunsuz şekilde hata verse de girdileri girmiş.
MASA 1 İÇİN,

Kod: Tümünü seç

var
num:Integer;
  begin

  form4.masaid.Text:='1';
  with ADOQuery1 do
  begin
  sql.clear;
  sql.add('select * from masalar where masaıd=1 and durum=0');
  open;
    if ADOQuery1.Eof then
    begin
       form4.ShowModal;
       form4.yenilemeClick(Sender);
     end
      else
       begin
          num:=Application.MessageBox('Masa ve Adisyon Açılsın mı ?','Adisyon Oluturma',
          MB_YESNO+MB_ICONQUESTION+MB_DEFBUTTON2+ MB_SYSTEMMODAL);
          if num = 6 then
            begin
              Image1.Picture.LoadFromFile('C:\Users\Murat\Desktop\Yeni Klasör (2)\Resimler\kmasa.png');
              with ADOQuery2 do
                begin
                Close;
                SQL.Text:='insert into adisyon (masaıd, tarih, durum, servistürıd,personelıd) values (:a,:b,:c,:d,:e)';
                Parameters.ParamByName('a').Value:=form4.masaid.text;
                Parameters.ParamByName('b').Value:=FormatDateTime('d.m.y h:m:s', now);
                Parameters.ParamByName('c').Value:='true';
                Parameters.ParamByName('d').Value:='1';
                Parameters.ParamByName('e').Value:=form1.DBkullanıcı.Text;
                ExecSQL;
                sql.clear;
                sql.Text:='select * from adisyon';
                Open;

                end;
              with ADOQuery1 do
                begin
                  close;
                  sql.Text:='update masalar set durum=:a where masaıd=:c';
                  Parameters.ParamByName('a').Value:='true';
                  Parameters.ParamByName('c').Value:=form4.masaid.text;
                  ExecSQL;
                  sql.Clear;
                  sql.Text:='select* from masalar';
                  open;
                end;
            form4.ShowModal;
            form4.yenilemeClick(Sender);

          end;

       end;


 end;


end;

MASA 2 İÇİN

Kod: Tümünü seç

var
num:Integer;
  begin

  form4.masaid.Text:='2';
  with ADOQuery1 do
  begin
  sql.clear;
  sql.add('select * from masalar where masaıd=2 and durum=0');
  open;
    if ADOQuery1.Eof then
    begin
       form4.ShowModal;
       form4.yenilemeClick(Sender);
     end
      else
       begin
          num:=Application.MessageBox('Masa ve Adisyon Açılsın mı ?','Adisyon Oluturma',
          MB_YESNO+MB_ICONQUESTION+MB_DEFBUTTON2+ MB_SYSTEMMODAL);
          if num = 6 then
            begin
              Image2.Picture.LoadFromFile('C:\Users\Murat\Desktop\Yeni Klasör (2)\Resimler\kmasa.png');
              with ADOQuery2 do
                begin
                Close;
                SQL.Text:='insert into adisyon (masaıd, tarih, durum, servistürıd,personelıd) values (:a,:b,:c,:d,:e)';
                Parameters.ParamByName('a').Value:=form4.masaid.text;
                Parameters.ParamByName('b').Value:=FormatDateTime('d.m.y h:m:s', now);
                Parameters.ParamByName('c').Value:='true';
                Parameters.ParamByName('d').Value:='1';
                Parameters.ParamByName('e').Value:=form1.DBkullanıcı.Text;
                ExecSQL;
                sql.clear;
                sql.Text:='select * from adisyon';
                Open;

                end;
              with ADOQuery1 do
                begin
                  close;
                  sql.Text:='update masalar set durum=:a where masaıd=:c';
                  Parameters.ParamByName('a').Value:='true';
                  Parameters.ParamByName('c').Value:=form4.masaid.text;
                  ExecSQL;
                  sql.Clear;
                  sql.Text:='select* from masalar';
                  open;
                end;
            form4.ShowModal;
            form4.yenilemeClick(Sender);

          end;

       end;


 end;


end;


Dobreli
Üye
Mesajlar: 9
Kayıt: 31 Ara 2017 01:49

Re: Yanlış türde bir değer kullanıyor Hatası saçmalığı

Mesaj gönderen Dobreli » 30 Ara 2018 08:31

Edit: Masa 1 Düzeldi atacağım videodan sonra düzeldi fakat masa 3 kısmında aynı sorun mevcut.
GDrive: https://drive.google.com/open?id=17UTkG ... 6YTjCCzDKj

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2153
Kayıt: 12 Haz 2003 03:05
Konum: merkez camii yanı

Re: Yanlış türde bir değer kullanıyor Hatası saçmalığı

Mesaj gönderen freeman35 » 31 Ara 2018 08:10

muhtemelen tasarım hatan var, kodunu debug et, debug ederken değerlerini kontrol et. mesela,
open;
if ADOQuery1.Eof
açtığın gibi eof true olmayabilir, ama içinde değer yok mu ? garanti için
ADOQuery1.Open;
ADOQuery1.First;
if ADOQuery1.Eof...
makina saçmalamaz bu arada :) mesela "ı" makina için değilde gavur için yabancı bir karakterdir, "masaıd" değil "masaid" kullan mesela.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!

Dobreli
Üye
Mesajlar: 9
Kayıt: 31 Ara 2017 01:49

Re: Yanlış türde bir değer kullanıyor Hatası saçmalığı

Mesaj gönderen Dobreli » 01 Oca 2019 01:03

freeman35 hocam öncelikle teşekkür ederim, Türkçe karakter kısmında haklısınız diğer projemde bu hususa daha fazla dikkat edeceğim. Aslında ''eof'' kısmını doğru kullanıp kullanmadığımı da bilmiyorum. Sorunumu enteresan şekilde çözdüm belkide sizin dediğiniz ile ilişkilidir. Normal şartlarda masa açarken adisyon yaratıp durumunu ''true '' yapıyorum kapatırken de ''false'' böylelikle her masa için ayrı adisyon numarası ve tek forumda ürün ekliyorum. Enteresandır ki eski adisyon verilerinden herhangi birini örneğin masa 1 için adisyon numarasını ''true'' yapınca masa1 için belirttiğim hatayı almadığımı fark ettim. Sorunumu şimdilik böyle aştım.

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2153
Kayıt: 12 Haz 2003 03:05
Konum: merkez camii yanı

Re: Yanlış türde bir değer kullanıyor Hatası saçmalığı

Mesaj gönderen freeman35 » 01 Oca 2019 08:26

Program yazmak, kod yazmak değildir. Bunu herkes yapabilir, bunlara dil denmesi, ingilizce vs gibi, öğrenebilinir kalıplar olmasından. bir dilde cümle kurabiliyor olmak kitap yazabilir demek değildir.
Mesele ödevi halletmekse tamam, ama öğrenmekse, "Enteresandır ki" 1 ve 0 dan oluşan bir sistemde böyle bir cümleye yer yoktur. Bence sen sorunu aşmamışsın, sadece üstünü öertüp ötelemişsin. Benim için hiç bir mahsuru yok, öğrenmen yada öğrenmemen arasında.
Programcı olmak istiyorsanız, "kurgulayın". bunun için bir bilgisayar yada programa gerek yok. En azından elektrik harcamazsınız :) Beyin bedava :)
İlk mesajımda yazdım debug edip satır satır çalıştır, değişkenleri kontrol et. Public private local değişkenleri hesaba kat.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!

Dobreli
Üye
Mesajlar: 9
Kayıt: 31 Ara 2017 01:49

Re: Yanlış türde bir değer kullanıyor Hatası saçmalığı

Mesaj gönderen Dobreli » 01 Oca 2019 11:18

Hocam öncelikle (baya) amatörüm ve bazı kod terimlerine tam manasıyla hakim olmadığımı belirtmek isterim. Amacım öğrenmek olmasa idi hazır yapılan bir programı bulup onun resimlerini değiştirirdim (Yapılan ödevlerin geneli böyle). Kodlamaya direk girişmem zaten hocam. Önce bir yazarım ne yapacağımı, nereden ne gelir, nereden gider vs. sonra yazmaya başlarım. Hatanın kaynağını düşündüğüm kısma debug işlemi yaptığımda yukarıda belirttiğim adisyon kısmında hata alıyordum. Çözdüm demiyorum haklısınız (mecburiyetten) üstünü örttüm ödev teslimim gelmişti. Bu camiaya aykırı cümle kullanıyorsam da kesinlikle bilgisizlik ve amatör olduğumdandır. Bunu yazma sebebim kesinlikle sizle tartışmak değil sadece kendimi yanlış yansıtmak istemiyorum. Haddimi aştı isem özür dilerim. Tekrar teşekkür ederim hem yardımcı olduğunuz için hemde eleştiriniz için.

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2153
Kayıt: 12 Haz 2003 03:05
Konum: merkez camii yanı

Re: Yanlış türde bir değer kullanıyor Hatası saçmalığı

Mesaj gönderen freeman35 » 02 Oca 2019 07:56

Öncelikle, hoca camiide, hoca camiide :) muhtemelen yaşın tutmaz bu Perran kutman ın dizisinde meşhur bir repliktir.
Biz forumu, amatörlere aslında doğru kelime, yeni başlayıpta bizi geçecek olanlara bildiklerimizi aktarmak. Ben müslümanlardanım, ve bize vebâldir, öğrendiğini bu dünyada birine bırakmazsan, mezarda bu boynuna yüktür.
Yazdıklarımda herzaman, çoğul cümle kullanırsam bu herkese demektir. Bu mesajı çok kişi okuyacaktır. Ekrandaki bir yazıyla neden kavga edeyim ki? değil mi? canımı sıkan olursa balta elimde, üteliği dahil silerim gider. forumdada keydi gelen cevap yazar yardım eder. tabiki kurallar çerçevesinde. kimisi kod yazar, bense etrafını anlatıp, çözümü buldurma yolunu seçerim.
Bu işi öğrenmek istiyorsan, bana öğretenin öğrettiğini yazayım, programı kafanızda çalıştırın, tek tek, kelime kelime.bilgisayarın çalıştırdığı gibi.
Önce program algoritmasını öğrenin, sonra çalışacağınız dilin komutlarını. Pascal anlaşılması kolay bir dildir. bununla başlarsanız diğerlerinide kolay öğrenirsiniz.
Kolay geke
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!

Cevapla