Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: kullanıcı yetkilendirme  (Okunma sayısı 1135 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Apex10

  • Yeni Üye
  • *
  • İleti: 6
  • Rep: +0/-0
kullanıcı yetkilendirme
« : 29 Nisan 2010 08:32:21 »
arkadaşlar tam olarak yeri burasımı bilmiyorum ama

şu şekilde bir yetkilendirme düşünüyorum

kullanıcı        form_No             Yetki
A                    10                      +
A                    11                       -
A                    12                      +
A                    13                      +
A                    14                      -
B                    10                       +
DATALARININ BULUNDUĞU BİR TABLOM VAR
ANA FORM AÇILIRKEN BU TABLODAKİ PROGRAMI AÇAN KULLANICININ YETKİLERİNİ KONTROL EDİP FORM NUMARASI VE YETKİ DURUMUNA GÖRE İLGİLİ FORMLARI AÇAN BUTONLARIN visible özelliklerini true yada false yapmak istiyorum ama beceremiyorum
bildiğim if  then else ile sadece ilk satırda bulduğu yetkiye göre davranıyor
ama istediğim ise o kullanıcıya ait tüm ekran yetkilerini kontrol ederek devam etmesi

yardımcı olursanız sevinirim

Çevrimdışı cakirr42

  • Global Moderatör
  • *****
  • İleti: 951
  • Rep: +5/-2
  • Cinsiyet: Bay
  • Ben Bana Kendim İçin Lazımım...
    • ÜYELİK.TK
Ynt: kullanıcı yetkilendirme
« Yanıtla #1 : 29 Nisan 2010 12:08:17 »
şöyle birşey yababiliriz öncelikle kullanıcıya göre filtreleme yaparız...
örn. a kullanıcısı için;
Kod: [Seç]
with adoquery1 do
 begin
 close;
 sql.clear;
 sql.add('select * from tablon where kullanıcı=a');
 open;
 end;

bu şekilde a kullanıcısını filtrelettik...
şimdi dbdeki yetkiye göre yetkiler vereceğiz.

Kod: [Seç]
while not adoquery1.eof do
 begin
 case adoquery1.fieldbyname('form_no').asstring of
 '10': if adoquery1.fieldbyname('yetki').asstring = '+' then btnform10.visible:=true else btnform10.visible:=false;
 '11': if adoquery1.fieldbyname('yetki').asstring = '+' then btnform11.visible:=true else btnform11.visible:=false;
 '12': if adoquery1.fieldbyname('yetki').asstring = '+' then btnform12.visible:=true else btnform12.visible:=false;
 '13': if adoquery1.fieldbyname('yetki').asstring = '+' then btnform13.visible:=true else btnform13.visible:=false;
 '14': if adoquery1.fieldbyname('yetki').asstring = '+' then btnform14.visible:=true else btnform14.visible:=false;
 end;
 next;
 end;
bu kodlarla dene bakalım ayak üstü yazdım ama umarım çalışır
« Son Düzenleme: 29 Nisan 2010 23:41:58 by Kocaturk »
http://akcakir.net/
Dalından Kopan Yaprağın Akıbetini Rüzgar Tayin Eder
"Alparslan TÜRKEŞ"

Çevrimdışı Apex10

  • Yeni Üye
  • *
  • İleti: 6
  • Rep: +0/-0
Ynt: kullanıcı yetkilendirme
« Yanıtla #2 : 29 Nisan 2010 13:43:47 »
cakirr42 ilgine teşekkürler kdolar ile ilgili bşr sorun yok heralde ancak iki döngüden birisi veya ikisi birden sanki hiç bitmiyo gibi bidurum var sorguyu bir türlü bitirmiyo
neden olabilir acaba

Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.117
  • Rep: +51/-0
  • Cinsiyet: Bay
  • Falan filan ...
Ynt: kullanıcı yetkilendirme
« Yanıtla #3 : 01 Mayıs 2010 19:41:59 »
next;  yazan kısmı
adoquery1.next; olarak değiştirerek denermisin .




Amatör Küme Programcı

Çevrimdışı sarp_halit

  • Yeni Üye
  • *
  • İleti: 2
  • Rep: +0/-0
Ynt: kullanıcı yetkilendirme
« Yanıtla #4 : 12 Ocak 2011 22:52:56 »
Merhaba,

Benim de benzer yapıda bir işlem düşünüyorum. Form üzerindeki bileşenleri kullanıcı yetkisine göre göstermek istiyorum. Benim veritabanı yapım şu şekilde.

FORMNAME------BILESEN-----USER_ID-----YETKI
frmMainform      frmMainform Halit             1
frmMainform      btnYeni        Halit             1
frmMainform      btnGuncelle Halit             1

Yetki tablosu bu şekilde. Projede yer alan bütün formlar ve formlarda yer alan bütün bileşenler ( isimleri) tabloda tutuluyor. Ben bir dll üzerinden işlem yapmak istedim. Bir procedure hazırladım.
Kod: [Seç]
procedure FormBileseniYukle(form, Kullanici:String); export;
  var sorgu:TAdoQuery;
  gecerliBaglanti:String;
  vtbaglantisi:TIniFile;
  kayitsayisi:integer;
begin
  sorgu:=TAdoQuery.Create(nil);
  vtbaglantisi:=TIniFile.Create(ExtractFilePath( Application.ExeName )+'veritabanlari.ini');
  with sorgu do
  begin
    ConnectionString:=frmMainform.gecerlibaglantiver;
    Close;
    SQL.Clear;
    SQL.Add('Select * FROM webKULLANICIYETKILER WHERE (FORMNAME=:form) AND (Kullanici=:KUL)');
    Parameters.ParamByName('form').Value:=form;
    Parameters.ParamByName('KUL').Value:=Kullanici;
    if not Active Then Active:=True;
    Open;
    while not eof do
    begin
      for kayitsayisi:=0 to recordcount do
      begin
          ?????????????????????????????????????????????
      end;
    end;
  end;
end;

amacım her bileşen için tek tek kontrol sağlamak yerine bir döngü kurup form üzerinde yetkisi 1 olan bileşenlerin visible özelliklerini true yapmak.

Böyle bir şeyi yapmak mümkün mü acaba?

şimdi for döngüsünün içerisine şu kodu yazarsam hata verecek.
Kod: [Seç]
if fieldbyname('YETKI').AsInteger = 1 Then fieldbyname('BILESEN').AsString:=True Else fieldbyname('BILESEN').AsString:= False;

ya da en azından gelen bileşen adını nasıl bileşen olarak tanımlatabilirim?

Teşekkür ederim.
« Son Düzenleme: 12 Ocak 2011 22:53:37 by sarp_halit »