Uygulama, geçerli işlem için yanlış türde bir değer kullanıyor. hata uyarısı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
denizfatihi

Uygulama, geçerli işlem için yanlış türde bir değer kullanıyor. hata uyarısı

Mesaj gönderen denizfatihi »

Merhaba,

Veritabanı MSSQL-2019 popupmenu içerisinde aşağıdaki döngüyü yapmaya çalıştığımda
"Uygulama, geçerli işlem için yanlış türde bir değer kullanıyor." hatası alıyorum güncellenecek alanlar "int" türünde

Kod: Tümünü seç

case MenuItem.Tag of
    0:
     if (strtoint(UniEdit1.Text)<=1)  or (strtoint(UniEdit1.Text)=2) //or (UniEdit1.Text='3')
      and  (strtoint(UniDBEdit2.Text)=0)
          then  begin
      
        UniMainModule.Qry_Produk_Durumu.Close();
        UniMainModule.Qry_Produk_Durumu.Parameters[0].Value := MenuItem.Tag + 1;
       
        if UniPageControl1.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := 1;
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
      //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.DataSource.dataset.fieldbyName('id').AsString;

        if UniPageControl2.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := 1;
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
      //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.DataSource.dataset.fieldbyName('id').AsString;
        UniMainModule.Qry_Produk_Durumu.ExecSQL();

       UniMainModule.Pro_Prod.Refresh();
       UniMainModule.Pro_Prod_Genel.Refresh();


        1: 
  
      if (strtoint(UniEdit1.Text)=0) or (strtoint(UniEdit1.Text)=2)
      and  (strtoint(UniDBEdit2.Text)=1)  // OR  (UniDBEdit2.Text='0')
      then
      begin

       // UniMainModule.Qry_Produk_Durumu.Close();
        UniMainModule.Qry_Produk_Durumu.Parameters[0].Value := MenuItem.Tag + 1;
      //  UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := StrToInt(UniDBEdit1.Text);
        if UniPageControl1.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := 2;
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
        //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.DataSource.dataset.fieldbyName('id').AsString;

        if UniPageControl2.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := 2;
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
      //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.DataSource.dataset.fieldbyName('id').AsString;
        UniMainModule.Qry_Produk_Durumu.ExecSQL();

       UniMainModule.Pro_Prod.Refresh();
       UniMainModule.Pro_Prod_Genel.Refresh();


     
      end;
    
    2:      
      if (UniEdit1.Text='0') or (UniEdit1.Text='3')
      and  (UniDBEdit2.Text<='2')// OR (UniDBEdit2.Text='1')   OR  (UniDBEdit2.Text='0')
      then
      begin

        UniMainModule.Qry_Produk_Durumu.Close();
        UniMainModule.Qry_Produk_Durumu.Parameters[0].Value := MenuItem.Tag + 1;
       // UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := StrToInt(UniDBEdit1.Text);
        if UniPageControl1.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := '3';
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
       //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.DataSource.dataset.fieldbyName('id').AsString;

        if UniPageControl2.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := 3;
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
      //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.DataSource.dataset.fieldbyName('id').AsString;
        UniMainModule.Qry_Produk_Durumu.ExecSQL();

         UniMainModule.Pro_Prod.Refresh();
        UniMainModule.Pro_Prod_Genel.Refresh();


     
      end;
        end;
        end;

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

Re: Uygulama, geçerli işlem için yanlış türde bir değer kullanıyor. hata uyarısı

Mesaj gönderen freeman35 »

Kod içeriğine fikirlerimi belirttim.

Kod: Tümünü seç

case MenuItem.Tag of
    0:
     if (strtoint(UniEdit1.Text)<=1)  or (strtoint(UniEdit1.Text)=2) //or (UniEdit1.Text='3')
      and  (strtoint(UniDBEdit2.Text)=0)
      
//#############    UniEdit1.Text -> Neden string ile sayısal işlem yapmaya çalışıyorsun? text null yada boşluksa ?

          then  begin
      
        UniMainModule.Qry_Produk_Durumu.Close();
        UniMainModule.Qry_Produk_Durumu.Parameters[0].Value := MenuItem.Tag + 1;
       
        if UniPageControl1.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := 1;
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
//#############  UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption; << inan bu yaşıma kadar böyle bir kurgu, mantık görmemiştim
        
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
      //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.DataSource.dataset.fieldbyName('id').AsString;

        if UniPageControl2.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := 1;
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
      //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.DataSource.dataset.fieldbyName('id').AsString;    
        UniMainModule.Qry_Produk_Durumu.ExecSQL();

       UniMainModule.Pro_Prod.Refresh();
       UniMainModule.Pro_Prod_Genel.Refresh();


        1: 
  
      if (strtoint(UniEdit1.Text)=0) or (strtoint(UniEdit1.Text)=2)
      and  (strtoint(UniDBEdit2.Text)=1)  // OR  (UniDBEdit2.Text='0')
      then
      begin

       // UniMainModule.Qry_Produk_Durumu.Close();
        UniMainModule.Qry_Produk_Durumu.Parameters[0].Value := MenuItem.Tag + 1;
      //  UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := StrToInt(UniDBEdit1.Text);
>>>>>        if UniPageControl1.TabIndex=0 then
>>>>>        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := 2;
>>>>>        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
>>>>>        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
>>>>>        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
>>>>>        //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.Columns[0].Field.AsString;
>>>>>        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.DataSource.dataset.fieldbyName('id').AsString;
 >>>>> ile işaretli satırlar ile aşağıdaki satırlar arasında ki fark ne?
 kaldı ki, "then ve else" den sonra begin end; bloğuna alınmayan kodun sadece ilk olanı then yada else bloğuna dahil edilerek çalıştırılır
 
        if UniPageControl2.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := 2;
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
      //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.DataSource.dataset.fieldbyName('id').AsString;
        UniMainModule.Qry_Produk_Durumu.ExecSQL();

       UniMainModule.Pro_Prod.Refresh();
       UniMainModule.Pro_Prod_Genel.Refresh();


     
      end;
    
    2:      
      if (UniEdit1.Text='0') or (UniEdit1.Text='3')
      and  (UniDBEdit2.Text<='2')// OR (UniDBEdit2.Text='1')   OR  (UniDBEdit2.Text='0')
      then
      begin

        UniMainModule.Qry_Produk_Durumu.Close();
        UniMainModule.Qry_Produk_Durumu.Parameters[0].Value := MenuItem.Tag + 1;
       // UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := StrToInt(UniDBEdit1.Text);
        if UniPageControl1.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := '3';
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
       //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid1.DataSource.dataset.fieldbyName('id').AsString;

        if UniPageControl2.TabIndex=0 then
        UniMainModule.Qry_Produk_Durumu.Parameters[1].Value := 3;
        UniMainModule.Qry_Produk_Durumu.Parameters[2].Value := UniLabel13.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[3].Value := UniLabel10.Caption;
        UniMainModule.Qry_Produk_Durumu.Parameters[4].Value := UniLabel12.Caption;
      //  UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.Columns[0].Field.AsString;
        UniMainModule.Qry_Produk_Durumu.Parameters[5].Value := UniDBGrid7.DataSource.dataset.fieldbyName('id').AsString;
        UniMainModule.Qry_Produk_Durumu.ExecSQL();

         UniMainModule.Pro_Prod.Refresh();
        UniMainModule.Pro_Prod_Genel.Refresh();


     
      end;
        end;
        end;

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 !!!
denizfatihi

Re: Uygulama, geçerli işlem için yanlış türde bir değer kullanıyor. hata uyarısı

Mesaj gönderen denizfatihi »

üstadım selamlar,

Görüşleriniz bizim için önemli teşekkür ederim.
Uygulama basit bir sırları onay mekanizması olacak o yüzden şekil ve kodlara fazla dikkat etmeden hızlıca yazıldı.
dbgrid üzerinde popupmenü ile 5 aşamalı bir onay mekanizması, edit1.text kısımları da yetki kodu tarzında (1 şunu yapar, 2 bunu yapar gibi)
düşünüldü o yüzden ama genel anlamda sorun çözüldü zaten, aşağıdaki parametreyi görmüyordu arka planda edite gönderip sorun çözülmüş oldu.

görülmeyen parametre

Kod: Tümünü seç

Parameters[5].Value := UniDBGrid7.DataSource.dataset.fieldbyName('id').AsString;
çözülme şekli

Kod: Tümünü seç

Parameters[5].Value := strtoint(iddeger.Text)
Cevapla