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