Selamlar Saygılar... closed dataset hatası veriyor bu kodlar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Karamizrak
Üye
Mesajlar: 39
Kayıt: 18 Oca 2005 05:41

Selamlar Saygılar... closed dataset hatası veriyor bu kodlar

Mesaj gönderen Karamizrak »

Selamlar saygılar biliyorum cok oluyorum ard arda bu tur sorunlarla sizin karsınıza cıkarak ama bir yardım daha istiyorum.

Kod: Tümünü seç


var
kadi,ksifre:string;
akpa:integer;
begin
ADOQUERY1.Close;
adoquery1.SQL.Text:='select * from KULLANICIGIRIS where kadi='''+edit1.Text+''' and sifre='''+edit2.Text+''' and DURUM='''+edit3.Text+'''';
adoquery1.Open;
BEGIN
//if ADOQuery1.Fields[3].AsString='YÖNETİCİ'THEN

if adoquery1.RecordCount=1 then

begin
//id:=adoquery1.Fields[0].AsString;
//kadi:=adoquery1.Fields[1].AsString;
//ksifre:=adoquery1.Fields[2].AsString;
form10.CLOSE;
FORM5.SpeedButton5.Visible:=TRUE;
FORM5.SpeedButton3.Visible:=FALSE;
end;
END;


if adoquery1.RecordCount=0 then
begin
ShowMessage('YÖNETİCİ ADI VEYA ŞİFRE YANLIŞ.....');
FORM10.Close;
FORM5.SpeedButton3.Visible:=TRUE;
FORM5.SpeedButton5.Visible:=FALSE;
end;
end;

bu kodlma buton clik olayında ve closed dataset hatası veriyor neden olabilir. Adoquery ler active:=true formun acılısında ama closed dataset diyor.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

kodlamanda ikinci begin ni anlayamadım. form10 close demişsin bu formun close olayında query kapanmış olabilirmi. end; end; ile blokları kapatmışsın sonra gelen if yüzünden kapalı diyor olabilirmi. biraz kafama takıldı da. bende uygulamamda yetkiye göre bazı butonları enable:=false yapıyorum ve düzgün çalışıyor o yüzden sizin kodlama kafamı karıştırdı biraz.

Kod: Tümünü seç

procedure TFrmSplash.suiButton1Click(Sender: TObject);
begin
  dm1.PrgGirisADOQry.Close;
  dm1.PrgGirisADOQry.SQL.Clear;
  dm1.PrgGirisADOQry.SQL.Add('select*from PRG_YETKI');
  dm1.PrgGirisADOQry.SQL.Add('where KULLANICI_ADI='''+edit1.Text+''' and SIFRE='''+edit2.Text+'''');
  dm1.PrgGirisADOQry.Open;

     if dm1.PrgGirisADOQry.RecordCount >0 then
     begin
       frmmenu.show;
       frmsplash.Hide;
       frmmenu.WindowState:=wsmaximized;
       frmmenu.suiForm1.Caption:='   Ana Menü ::: proPersonel - Kullanıcı : '+
                          dm1.PrgGirisADOQry.fieldbyname('ADI_SOYADI').AsString;

              if dm1.PrgGirisADOQry.FieldByName('SEVIYE').AsInteger=1 then
              begin
                frmmenu.suiButton13.Enabled:=false;
              end;

              if dm1.PrgGirisADOQry.FieldByName('SEVIYE').AsInteger=2 then
              begin
                frmmenu.suiButton1.Enabled:=false;
                frmmenu.suiButton13.Enabled:=false;
                frmmenu.suiButton14.Enabled:=false;
                frmmenu.suiButton15.Enabled:=false;
              end;
     end
     else
     begin
        application.MessageBox('Hatalı Kullanıcı Adı/Şifre Lütfen Kontrol Edip Tekrar Deneyiniz',
                               'Giriş Hatası', MB_OK+MB_ICONWARNING);
        edit1.Clear;
        edit2.Clear;
        edit1.SetFocus;
     end;
end;
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kodun başlangıcına kesme (break point)-F5 koyup, nerede, hangi satırda takıldığını takip edebilirsiniz. Ayrıca kodlamanız da pek düzenli değil. Bloklamaya dikkat etmemişsiniz. adoquery1.Open; altındaki BEGIN fazlalık gibi durmakta. Velahsılı okunaklı olması hatayı yakalamak için ve daha sonra kodu incelediğinizde daha kolay anlamanız için olmazsa olmazlardan :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla