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
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

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: 2356
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
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

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