ifs etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
ifs etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

17 Şubat 2011 Perşembe

IFS - Centura debug videosu download adresi güncelleme

Aşağıdaki adresten download edilebilir.

http://rapidshare.com/files/448429217/centura_debug.rar

27 Ekim 2010 Çarşamba

Oracle shared server opsiyonu ve IFS

Geçenlerde, IFS ERP uzmanı olarak çalışmaya devam eden arkadaşlarımdan birisi aradı.
Garip bir sorunundan bahsetti.

Problem oluşan sistem özellikleri
----------------------------------------
windows 2008 server 32 bit
8 gb ram
100+ acık kullanıcı connection
vs.

Problem Açıklaması
----------------------------------------
Database e belirli bir sayı üstü kullanıcı bağlandığında sistem yeni connection isteklerine
cevap vermiyormuş. Ta ki bazı connectionlar kapatılıncaya kadar.
Bu sorun oluştuğu anda ise sistem ram inin 2.6 gb gibi bir kısmı yani yarıdan az kısmı kullanılıyormuş.


Hımmm.

Oracle database e bağlanma sürecine biraz daha yakından bakacak olursak;

Oracle listener, her dedicated session için server tarafında bir dedicated server process
oluşturur(veya oluşturmaya çalışır). Bu oluşturulan process belirli miktarda bellek kullanır.
32 bit işletim sistemlerinde oracle, 2.5-3 gb civarının üstünde ram
kullanamadığından bu sorun oluşuyor. (2.5 - 3 gb den fazla ram kullanamama sorunu,
oracle dan değil 32 bit mimariden kaynaklanıyor yanlış anlaşılmasın )

Şimdi bir kere en iyi çözüm 64 bit işletim sistemine oracle kurmak ve gerekiyorsa sisteme ram eklemek.
Sonrada gerekli Oracle memory parametrelerini set etmek.

İkinci en iyi çözüm shared server opsiyonunu aktifleştirmek. Çünkü bu şekilde
her yeni connection için yeni bir dedicated server açılmayacak. Dolayısıyla memory
dolmayacak. Ama yoğun data kullanan kullanıcıların biraz daha yavaş çalışması duruma göre söz konusu.

Peki IFS ortamında nasıl yaparız bu
oracle shared server ı aktifleştirme işini?
------------------------------------------
1) Server parametrelerinde değişiklikler

alter system set shared_servers=10;
alter system set dispatchers='(PROTOCOL=TCP)';

Yukarıdaki sql statement lerini çalıştırdıktan bir süre sonra tns yöntemi dışı tüm bağlantılar
shared olmaya başlayacaktır.

Bu durumu aşağıdaki query ile de inceleyebilirsiniz.
SERVER sütünu SHARED ve NONE olan bağlantılar shared bağlantılardır.

select username,server from v$session order by server desc

Oracle parametrelerini burada sadece memory ye set ettik yani
database restart ında shared server konfigurasyonumuz yok olacak.
Parametrelerin kalıcı olması için testlerin ardından parametre dosyası güncellenebilir.

2) Client tarafında değişiklikler

IFS teki(Centura desek daha doğru) bağlantı tanımları runtime klasörü altındaki sql.ini dosyasından yapılıyor.
Bu dosya içerisinde, [oragtwy] tiketi altındaki remotedbname değerleri
bizim database bağlantılarımız.Örneğin sql.ini dosyamız aşağıdaki gibi olsun.

[oragtwy]
longbuffer=32760
fetchrow=20
maperror=OFF
substitute=SYSSQL.,
remotedbname=gercek,@//bizim_server_name_veya_ip:1521/bizim_sid

yukarıdaki 1. adımdaki server parametreleri set edildikten sonra,
buradaki "gercek" bağlantısından bağlanan tüm yeni client bağlantıları,
shared server connection u açarlar.

Burada bir sorun var .Tüm kullanıcı bağlantıları shared oldu. Fakat ben
bazı kullanıcılarımın performans açısından shared değil dedicated bağlanmasını
istiyorum diyebilirsiniz.

İşte bunu sağlayabilmek için sql.ini dosyasındaki, remotedbname imizi aşağıdaki
gibi değiştirmeliyiz.

remotedbname=gercek,@//bizim_sid

Buradaki bizim_sid, tnsnames.ora dosyasındaki tns ismidir.

Bu noktadan sonra bağlantının shared veya dedicated olması oracle client tnsnames dosyasına bağlıdır.

Dedicated için, aşağıdaki gibi bir tnsnames.ora tanımlaması olabilir.
Burada "SERVER=dedicated" olan bölümü "SERVER=shared" yaparsak bağlantı shared oluşturulmaya çalışılır..
Böylece her kullanıcıya, kendini bilgisayarıdaki tnsnames.ora da gerekli ayarları yaparak,
shared mı yoksa dedicated mı bağlantı yapacağı tanımlanabilir.

bizim_sid=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=bizim_server_name_veya_ip)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SID=BIZIM_SID)
)
)


Burada anlattıklarıma temel olan oracle versiyonları 10g ve 11g.
Ayrıca ASMM(Automatic Shared Memory Management 10g) veya
AMM(AutomaticMemory Managemet 11g) özelliklerinin aktif olduğunu varsaydım.
Bu varsayımımım yanlışsa, large_pool değerinin 50 mb civarı olarak, shared server konfigurasyonundan önce
ayarlanması gereklidir.Bu değer de duruma göre arttırılabilir.

Daha eski versiyonlar için farklı database configurasyonu gerekli olabilir.

Daha fazla bilgi için aşağıdaki bağlantılar da incelenebilir.

http://barisakverdi.blogspot.com/2010/10/oracle-shared-server-opsiyonu.html
http://barisakverdi.blogspot.com/2010/10/oracle-shared-server-konfigurasyonu.html
http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/manproc001.htm
http://download.oracle.com/docs/cd/B10500_01/network.920/a96580/connect.htm
http://download.oracle.com/docs/cd/B10500_01/network.920/a96580/mts.htm
http://www.dba-oracle.com/t_mts_multithreaded_servers_shared.htm

11 Haziran 2010 Cuma

Oracle Database Kurulumu Tavsiyeleri

Aşağıdaki öneriler tüm oracle database kurulumları için geçerli tavsiyeler
olmakla beraber, IFS özelinde bazı açıklamalar da eklemekte fayda görüyorum.

* Database server a Oracle dışında hiçbir uygulama kurmayın.

IFS Developer ı kendi bilgisayarınıza da kurabilirsiniz.
Gerekli yedekler ile ilgili bir politika oluşturduktan sonra başka
bir sorun oluşacağını düşünmüyorum.

Eğer developer dışı IFS software i kurulumuna ihtiyacınız var ise
başka bir server kullanın.


* Database server üzerinde dosya paylaşımı kullanmayın.

Kullanıcı dosyalarını oracle server oluşturduğunuz paylaşımlar
üzerinden sağlamanız duruma göre önemli miktarda; network bant genişliği kaybına ve
server io gereksinimi dolayısıyla performans sorunlarına yol açabilir.

ifs executable larına erişim dahil olmak üzere tüm share ihtiyacınızı oracle db server
dışı bir noktaya yönlendirin.


* Database server İşletim sistemi seviyesinde firewall ve antivirus kullanmayın.

Oracle database sunucunuzu fiziksel bir firewall arkasına alarak sadece belirli ip ve port yetkisi vermeniz yerinde olacaktır.
Örneğin tüm kullanıcılar 1521 portundan gelebilir ama ssh veya remote desktop sadece şu ip den gelebilir gibi.

* Mevcut sistem RAM inin %80 ini oracle a verin.

Gördüğüm IFS install larındaki oracle konfigurasyonları memory noktasında çok yanlış olabiliyor.
Mesela benim bire bir karşılaştığım bir durumda, server de 8 GB ram olmasına rağmen
oracle a 1 GB civarı ram verilmişti. Tabii bu "next" "next" diyerek oracle kurmaktan kaynaklanmakta :)
Tabii hal böyle olunce database ten performans beklememek lazım.

Ayrıca automatic memory managemet özelliğinin aktif olması da önemlidir.
Aksi taktirde tüm oracle memory sinin manual yönetimi gerekir.
Bu özellik 10g ve sonrasında mevcuttur.

Oracle db üzerindeki şu andaki mevcut ram durumunu aşağıdaki query ile veya oracle enterprise manager üzerinde "memory advisor" da

görebilirsiniz.

SGA total (değerler megabyte cinsinden)
-----------------------------------------
select round(sum(bytes)/1024/1024,2) total_sga,
round(sum(decode(name,'free memory',bytes,0))/1024/1024,2) free,
round((sum(decode(name,'free memory',bytes,0))/1024/1024)/(sum(bytes)/1024/1024)*100,2) free_per
from v$sgastat

PGA total (değerler megabyte cinsinden)
-----------------------------------------
select value/1024/1024 from v$pgastat where name = 'aggregate PGA target parameter'


* Oracle için işletim sistemi olarak mümkünse linux tercih edin.

Oracle ın linux üzerinde daha hızlı çalıştığı bilinen bir gerçektir. Ayrıca oracle linux üzerinde
geliştirildiğinden tum yeni versiyonlar ve güncellemeler öncelikle linux versiyonu olarak dağıtılır.
Evet "en iyi işletim sistemi bildiğin işletim sistemidir" cümlesine katılıyorum.
Fakat yeni fırsatlara da açık olmak gereklidir diye düşünüyorum.
Ayrıca kariyerini DBA olarak devam ettirmek isteyen herkes er yada geç linux ile tanışmak durumunda kalacaktır
desem yanlış olmaz heralde. Maliyetler nokatasında windows server lisans ücretleri de olayın başka bir tarafı.

Ayrıntılı karşılaştırma ve ekstra bilgi için aşağıdaki linkler faydalı olabilir.

http://www.dba-oracle.com/oracle_tips_linux_oracle.htm

http://www.oracle.com/us/technologies/linux/025994.htm


* 64 bit işletim sistemi kullanın.

32 bit sistemlerin bilinen kısıtlamalarına takılmamamak için 64 bit işletim sistemi tercih edin.

İyi çalışmalar.

4 Haziran 2010 Cuma

IFS ortamının (Database,executable,develeoper vs) VMWARE üzerinde çalışır hale getirilmesi mümkün müdür?

Evet mümkündür. Bu şekilde çok ta işlevsel bir test sistemi oluşturulmuş olur.
Bazı firmaların production da bu tip sistemleri kullandığı da görülmedik bir şey değil LinkedIn gruplarından anladığım kadarı ile.
Tüm sistemin yedeğini almak için sanal makinayı kapatıp birkaç dosyanın kopyalanması çok cazip geliyor.
Örneğin 0-50 kullanıcı sayılı nispeten küçük database li bir production sistemi
bence vmware e de taşınabilir.

Taşıma işlemi aşağıdaki adımlardan oluşur.

1. Vmware üzerine, production da çalışan işletim sisteminin aynısı ve aynı versiyon oracle db kurulur.
Burada dikkat edilmesi gereken iki nokta vardır.
a. db create edilirken production daki oracle_sid neyse aynısını vermek gerekir.
b. Kurulan işletim sistemi ve oracle versiyonları production da kullanılanların aynısı olmalıdır.

2) Production ve vmware database kapatılır ve oracle dosyaları (datafile,redolog,controlfile vs) vmware üzerine aynı klasör yapısı ile kopyalanır.

3) Vmware üzerindeki database açılır ve IFS kurulum klasoru wmware içerisine kopyalanır ve install edilir.

4) Kullanılan exe, apx,api ne varsa onlar da aynı klasor yapısı ile vmware üzerine kopyalanır.

3 Mayıs 2010 Pazartesi

IFS kullanıcı grubu

Merhaba

Uzun zamandır IFS kullanıcılarının birbirleriyle bilgi/deneyim paylaşabilecekleri
bir platform olması gerektiğini düşünüyordum. Eminim bunu tek düşünen ben değilim :)
Artık böyle bir platform var. Tabi aktifliği Türkiye deki IFS kullanıcılarına bağlı olacaktır.

IFS ERP Turkiye Kullanici Grubu
http://www.linkedin.com/e/vgh/3012612/

Her ne kadar artık IFS developer/admin/user olmadığımı onceki postlarımda belirtmiş olsam da, zaman zaman bazı arkadaşların soruları mail kanalıyla gelmeye devam ediyor.
Düşündüm ki sorularımızı ve cevaplarımızı LinkedIn üzerine yazarsak, daha fazla kişinin deneyimlerinden faydalanabiliriz veye başka arkadaşlara da faydamız olabilir.

Saygılar.
Barış

9 Kasım 2009 Pazartesi

IFS-Centura Debug Videosu (Rapidshare Link)

http://rapidshare.com/files/304386557/centura-debug.rar

Ulaşılamayan linkler ile ilgili mail atarsanız
yenilerini burada yayınlayacağım.
Ayrıca sorularınız ile ilgili
cevapları da burada bulabilirsiniz.

8 Ekim 2009 Perşembe

Centura - Kaydetme öncesi kontrol

Kaydet butonuna basıldığında önce bir kontrol gerçekleştirmek istiyorum. Duruma göre kaydedilecek veya bir mesaj gösterilecek ve kaydetme iptal edilecek. Nasıl yaparım ?
Önce ihtiyacımız olan değişkenleri forma ekleyelim.
Number: nDegerListesindeKacTaneVar
Boolean: bBasariliMi

İlgili cTableWindow veya cFormWindow 'a ait "action" tabına eğer önceden eklenmediyse On PM_DataSourceSave olayı eklenilir. Önceden bu olaya kod yazılmış ise değişiklik yapılır.Şimdi de bu gereklilikleri gerçekleştirelim.
On PM_DataSourceSave
! kod buradan basladi
Select Case wParam
Case METHOD_Execute
Set bBasariliMi = DbPLSQLBlock(c_hSql,"
BEGIN
SELECT count(*)
INTO :frmShopOrd.nDegerListesindeKacTaneVar
FROM &AO.UZMAR_OPER_TANIM_LOV
WHERE tanim =:tbwShopOrderOperation.colOperationDescription;
END;")
If bBasariliMi
If nDegerListesindeKacTaneVar < 1
Call SalSendClassMessage (PM_DataSourceSave, wParam, lParam )
! kod burada bitti

Centura - Tablomda veri var mı?

Aşağıdaki örnekteki fonksiyonu kullanarak,
herhangibir cTableWindow veya cChildWindow
içinde satır olup olmadığı test edebilirsiniz.

If SalTblAnyRows( mytablename, 0 , 0 )
..çeşitli işler..

SalTblAnyRows( mytablename, 0 , 0 ) : bu satır eğer data varsa TRUE döndürecektir.

Centura - TableWindow Refresh

Table window

refresh
*****************************
!!CB!! 174
Call tbwEngPartStructureConsistOf.DataSourceRefresh( METHOD_Execute )

IFS - Kısa Yoldan Ekrana Yetki Verme

Oracle daki IFS application owner schema da (Orneğin IFSAPP ), aşağıdakine benzer
plsql kodu uygulanarak istenilen ekrana kolayca yetki verilebilir.
Bu iş admin.exe arayüzünden bazen çok zor yapılabiliyor.

BEGIN
ifsapp.Security_SYS.Grant_Pres_Object( 'frmWorkOrderReportInTab', 'UZM_BAKIM', 'TRUE', 'TRUE' );
commit;
EXCEPTION
WHEN OTHERS THEN
rollback;
raise;
END;

Kullanım Detayları
******************************
ifsapp.Security_SYS.Grant_Pres_Object('yetkiverilecekekranismi','Rol_ismi','TRUE','TRUE')

CENTURA - TableWindow a süzerek data getirme

On SAM_Click
Set sOlusturulanSql = "doc_class = 'EYS' "
! ---------------------------------------------------------------------
! ---------------------------------------------------------------------
Call SalSendMsg( tbwUzmarDocIssues, PM_DataSourceUserWhere, METHOD_Execute, SalHStringToNumber( sOlusturulanSql ) )
Call SalSendMsg( tbwUzmarDocIssues, PM_DataSourcePopulate, METHOD_Execute, 0 )

Centura - Tablomda veri var mı?

Aşağıdaki örnekteki fonksiyonu kullanarak,
herhangibir cTableWindow veya cChildWindow dan
miras alınarak yapılmış object içinde
satır olup olmadığı test edebilirsiniz.


If SalTblAnyRows( mytablename, 0 , 0 )
..çeşitli işler..


SalTblAnyRows( mytablename, 0 , 0 ) : bu satır eğer data varsa TRUE döndürecektir.

Centura - TableWindow un kaçıncı satırındayım?

TableWindow.RecNo
------------------------
nContext = SalTblQueryContext ( hWndTbl )

Centura - Tarih

Örnek
******************************************
!!CB!! 173
On SAM_Click
If SalIsValidDateTime(df1)
Set df1 = SalFmtFormatDateTime ( (SalStrToDate(df1) + 1), 'dd.MM.yyyy' )
Else
Call SalMessageBox('Girilen tarih gg.aa.yyyy formatında olmalıdır. (Örn.

01.11.2010)','HATA!',MB_Ok)
Call SalSetFocus ( df1 )


Bir sonraki günü nasıl bulurum?
*******************************
Set dDateDegisken = dDateDegisken + 1

Yukarıdaki komut satırı,
dDateDegisken içerisindeki tarihe bir gun
eklenmesini sağlayacaktır.




Bir string değerin valid bir tarih olup
olmadığını nasıl test edebilirim ?
*****************************************
If SalIsValidDateTime(df1)
.......gecerli bir tarih degeriyse yapilacak cesitli isler
Else
.......gecerli bir tarih degeriyse yapilacak cesitli isler




Bir tarih değerini istenen formatta
nasıl yazdırabilirim?
********************************************
Set df1 = SalFmtFormatDateTime ( dBirDate ), 'dd.MM.yyyy' )




KULLANILABİLECEK FORMAT AÇIKLAMALARI
**************************************************************

Valid date/time picture format values:

Value Item Appearance
M month 1-12
MM month 01-12
MMM month Jan-Dec
MMMM month January-December
d day 1-31
dd day 01-31
ddd day Mon-Sun
dddd day Monday-Sunday
yy year 00-99
yyyy year 0000-9999
hh hour 1-12
hhhh hour 0-24
mm minutes 0-59
ss seconds 0-59
mmmmmm microseconds 000000-999999
AMPM AM/PM The AM/PM indicator
Examples of date/time picture format mappings:

Date/Time Picture Meaning
d MMMM, yyyy 9 January, 1992
dddd, MMMM d, yyyy Friday, February 7, 1992
M/d/yy 3/18/92
dd-MM-yyyy 18-03-1992
d “of” MMMM, yyyy 9 of January, 1992
M/d/yy-hh.mm.ss AMPM 2/3/92-12.23.15 AM

Centura - Form açılışında label a tarih yazmak

On SAM_Create
...Set df1 = SalFmtFormatDateTime ( SalDateCurrent() , 'dd.MM.yyyy' )
...Call SalSendClassMessage ( SAM_Create, wParam, lParam )

30 Nisan 2009 Perşembe

Nasıl TableWindow kolonunun arka plan rengi değiştirilir?

TableWindow kolonuna ait arkaplan rengini değiştirmek için XSalTblSetColumnBackColor
fonksiyonu kullanılabilir. Bu fonksiyon xsal2_32.dll içerisindeki tablewindow
external fonksiyonlarından birisidir. External fonksiyonlar arasında olmaması durumunda aşağıdaki kod ile kolayca ekleyebilirsiniz.

!!CB!! 145
Function: XSalTblSetColumnBackColor
Description: BOOL XSalTblSetColumnBackColor(
HWND p_hwndCol,
COLORREF p_cBackColor );
Export Ordinal: 0
Returns
Boolean: BOOL
Parameters
Window Handle: HWND
Number: LONG



Bu fonksiyon kullanılarak aşağıda verilen kod orneğini değiştirerek kendi istediğiniz sütunların rengini değiştirebilirsiniz.

!!CB!! 173
On SAM_CreateComplete
Call SalSendClassMessage ( SAM_CreateComplete, wParam, lParam )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colnMiktar1, COLOR_LightGreen )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colnMiktar2, COLOR_LightGreen )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colnMiktar3, COLOR_LightGreen )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colnMiktar4, COLOR_LightGreen )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colnMiktar5, COLOR_LightGreen )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colsAciklama, COLOR_LightGreen )
On PM_DataSourcePopulate
Call SalSendClassMessage ( PM_DataSourcePopulate, wParam, lParam )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colnMiktar1, COLOR_LightGreen )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colnMiktar2, COLOR_LightGreen )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colnMiktar3, COLOR_LightGreen )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colnMiktar4, COLOR_LightGreen )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colnMiktar5, COLOR_LightGreen )
Call XSalTblSetColumnBackColor( tbwUzmarGunYmk.colsAciklama, COLOR_LightGreen )

27 Nisan 2009 Pazartesi

Centura ekranlarımıza makyaj yapalım.

Pekçok yazılımda kullanılan GUI tekniklerinden, grid sutun/satırlarının renklendirilmesi ve TAB yerine ENTER kullanımı, hem kullanıcı eğitimleri hem de kullanım açısından avantajlar yaratmaktadır. Sonraki makalede TAB yerine ENTER tuşunun kullanılması ve centura tablewindow sutununun renklendirmesi konularını anlatacağım. Bu teknikler kullanılarak hazırlanmış form örneği aşağıdadır.

17 Nisan 2009 Cuma

LOV icin filtreleme örneği

cColumn altındaki action alanına aşağıdakine benzer
kod yazılarak lov un filtrelenmesi sağlanabilir.

On PM_DataItemLovUserWhere
...Return SalHStringToNumber("ALANADINEYSEO='biseybisey'")

'biseybisey' yerine :i_hWndFrame.frmTRHAKTEVZI.tblDetail.coldDated
gibi bir referans ile örneğin bir table veya
formdan data alarak lov u filtrelemek te mümkündür.

burada ALANADINEYSEO, LOV a temel olan view deki
fieldname i temsil etmektedir.

Bir Centura penceresini, başka bir pencereden belirli bir kaydı seçerek açma

Bir ekrandan diğerine, parametre
aktararak geçiş, kullanıcıya hız kazandıran bir opsiyondur.
Bu makalede centurada bunun nasıl yapıldığına
ilişkin bir örnek uygulama inceleyeceğiz.

Örneğimiz nasıl çalışır?
---------------------
Parametre göndererek açmak istediğimiz formun adı X olsun.

Önce global bir değişken tanımlıyoruz.
Sonra X formunu açan window, belirli bir durumda
(Örn. içindeki bir buton tıklanılınca) bu global
değişkeni set ediyor ve X formunu açıyor.
X formu kendi açılış olayında da bu parametre dolu mu acaba diye
kontrol ediyor. Eğer doluysa kayıtlarımızı bu
parametreye göre filtreliyoruz.

Adım adım anlatmak gerekirse...


*******1************************
Formların üzerindeki bölgede gerekli global değişken tanımlanır.

variables
------------
!!CB!! 223
String: __g_sGecici



*******1************************


*******2************************


Açılacak forma aşağıdaki koda benzer kod eklenir. Bu forma X formu diyelim.

variables
------------
!!CB!! 118
String: sGeciciSql


Actions
------------
!!CB!! 173
On SAM_CreateComplete
If __g_sGecici != STRING_Null
Set sGeciciSql = "dagitim_no = '" || __g_sGecici || "'"
Call SalSendMsg(
hWndForm,
PM_DataSourceUserWhere, METHOD_Execute,
SalHStringToNumber( sGeciciSql )
)
Call SalSendMsg( hWndForm, PM_DataSourcePopulate, METHOD_Execute, 0 )
Call SalSendClassMessage ( SAM_CreateComplete, wParam, lParam )
On SAM_Close
Set __g_sGecici = STRING_Null
Call SalSendClassMessage ( SAM_Close, wParam, lParam )

*******2************************

*******3************************
X formunu açacak forma aşağıdaki kod eklenir.

Actions
------------
!!CB!! 139
Set __g_sGecici = tbwUzmarDokDagitim.colsDagitimNo
Call SalCreateWindow( 'frmUzmarDokDagitim', hWndMDI )


*******3************************

23 Mart 2009 Pazartesi

Herhangibir IFS Ekranına Nasıl Yetki Veririm?

Ekran tasarlama ile ilgili anlatımlarımızın son ayağını yeni ekrana
yetki verme işlemi oluşturuyor. IFS yazılımı üzerinde ekranların
yetkilendirilmesi çok ayrıntılı ve akılcı olarak ele alınmıştır.
Her ekran için hangi kullanıcı grubunun neler yapabileceği
belirlenebilir. Örneğin "Satınalma" kullanıcı grubu yeni sipariş ekleyebilir
fakat "Stok" kullanıcı grubu sadece görüntüleyebilir gibi.
Ekranda kullanılan her oracle prosedürüne ayrı ayrı yetki verilmesi veya
yetki iptali de mümkündür.

IFS Yetki işleri Admin.Exe kullanılarak gerçekleştirilir.
Ben bu aşamada Admin.exe ile bu işlerin nasıl halledileceğine değinmek yerine
alternatif bir yöntemden bahsetmek istiyorum. İleride Admin.Exe 'den de
bahsedebiliriz.

Pek çok durumda Admin.Exe içerisinde yetki vermek istediğimiz ekranı bulmanın da
problem olduğunu göz önüne alarak bu yöntemin çok işinize yarayacağını düşünüyorum.
Aşağıdaki kodu değiştirerek Toad veya SqlDeveloper vs. programlardan birinde çalıştırabilirsiniz. Aşağıdaki kodu çalıştırmanızın ardından ilgili rol verilmiş olan tüm kullanıcılar belirttiğiniz ekranı tam yetkili olarak kullanabilecektir.
Form adları küçük-büyük harf duyarlıdır. Bu konuya dikkat etmelisiniz.
Bu tür bir yanlışlık yapmanız veya olmayan bir formu parametre olarak vermeniz durumunda hata oluşacaktır.

BEGIN
ifsapp.Security_SYS.Grant_Pres_Object( 'frmWorkOrderReportInTab', 'UZM_BAKIM', 'TRUE', 'TRUE' );
commit;
EXCEPTION
WHEN OTHERS THEN
rollback;
raise;
END;

Kullanım Detayları
******************************
ifsapp.Security_SYS.Grant_Pres_Object('yetkiverilecekekranismi','Rol_ismi','TRUE','TRUE')