root olarak script çalıştırmak için :
/etc/rc.local
dosyasını edit ederek çalıştırılacak script i ekleyebilirsiniz.
Eğer başka bir kullanıcı session açılışında
bir script çalıştıracaksanız :
/home/user_neyse_o/bash_profile
dosyasını edit ederek çalıştırmak istediğiniz script i ekleyebilirsiniz.
Örn : Burada "oracle" kullanıcı adı. Editor olarak vi kullanıyoruz.
[oracle@bizimserver ~]$ pwd
/home/oracle
[oracle@bizimserver ~]$vi .bash_profile
23 Mart 2010 Salı
11 Mart 2010 Perşembe
Linux - Crontab kullanarak tekrarlayan işlerin başarımı
Linux işletim sistemi; bir programı veya scripti belirli bir zamanda, bir defaya mahsus olarak veya tekrarlayan şekilde çalıştırmayı desteklemektedir. Bu makalede, periyodik şekilde tekrarlayan işlerin Linux üzerinde "cron" ile nasıl başarılacağını anlatmaya çalışacağım.
Crond servisi, her dakika cron job larını kontrol eder ve çalışma zamanı gelen job lar çalıştırılır. crond servisi ,eğer siz kapatmadıysanız, her açılışta çalışır durumdadır. Bir görev en az 1 dk. da bir çalıştırılabilir. 1 dk. dan daha kısa süreli bir tekrar çalıştırma söz konusu ise cron işinizi görmeyecektir.
Şimdi ,aşağıdaki örnek sh scriptini her 5 dakikada bir çalıştırarak kavramları açıklayacağım.
Örnek sh scripti
****************************
[oracle@oradb ~]$ cat mycrontest.sh
#!/bin/bash
echo "Saat simdi $(date +%T) - $(date +%A)"
[oracle@oradb ~]$ ./mycrontest.sh Saat simdi 18:37:42 - Friday
****************************
Yukarıdaki scripti 5 dk. da bir çalıştıracak crontab girişini yapalım.
****************************
[oracle@oradb ~] crontab -e
yukarıdaki komutu çalıştırdığınızda, çalıştırdığınız kullanıcıya ait zamanlanmış
görev listesi vi editörüne gelir. Aşağıdaki satıra vi editörüne ekleyip kaydetmemizin ardından mycrontest.sh scriptimiz her 5 dk. da bir çalışacaktır.
*/5 * * * * /home/oracle/mycrontest.sh
Yukarıdaki örnek job setup satırının açıklamaları aşağıdaki gibidir.
script_dosyasi : /home/oracle/mycrontest.sh
* * * * * script_dosyasi
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
Bu konuda bir örnek daha vereyim. Örneğin aynı script dosyasını
her gün sabah 04:15 çalıştırmak için aşağıdaki satır cron jobları
arasına eklenebilir.
crontab -e
15 4 * * * /home/oracle/mycrontest.sh
****************************
Cron job görüntüleme ve tüm cron jobları silme
****************************
[oracle@oradb ~]$ crontab -l
5 * * * * /home/oracle/mycrontest.sh
[oracle@oradb ~]$ crontab -r
[oracle@oradb ~]$ crontab -l
no crontab for oracle
Yukarıdaki şekilde crontab -r komutu ile geçerli user için crontab boşaltılabileceği gibi isterseniz crontab -e kullanarak da görev ekleme, çıkarma veya görevlerde değişiklikler yapabilirsiniz.
Ek olarak aşağıdaki linkleri inceleyebilirsiniz.
Türkçe
----------------
http://www.belgeler.org/man/man5/man5-crontab.html
İngilizce
----------------
http://adminschoice.com/crontab-quick-reference
Crond servisi, her dakika cron job larını kontrol eder ve çalışma zamanı gelen job lar çalıştırılır. crond servisi ,eğer siz kapatmadıysanız, her açılışta çalışır durumdadır. Bir görev en az 1 dk. da bir çalıştırılabilir. 1 dk. dan daha kısa süreli bir tekrar çalıştırma söz konusu ise cron işinizi görmeyecektir.
Şimdi ,aşağıdaki örnek sh scriptini her 5 dakikada bir çalıştırarak kavramları açıklayacağım.
Örnek sh scripti
****************************
[oracle@oradb ~]$ cat mycrontest.sh
#!/bin/bash
echo "Saat simdi $(date +%T) - $(date +%A)"
[oracle@oradb ~]$ ./mycrontest.sh Saat simdi 18:37:42 - Friday
****************************
Yukarıdaki scripti 5 dk. da bir çalıştıracak crontab girişini yapalım.
****************************
[oracle@oradb ~] crontab -e
yukarıdaki komutu çalıştırdığınızda, çalıştırdığınız kullanıcıya ait zamanlanmış
görev listesi vi editörüne gelir. Aşağıdaki satıra vi editörüne ekleyip kaydetmemizin ardından mycrontest.sh scriptimiz her 5 dk. da bir çalışacaktır.
*/5 * * * * /home/oracle/mycrontest.sh
Yukarıdaki örnek job setup satırının açıklamaları aşağıdaki gibidir.
script_dosyasi : /home/oracle/mycrontest.sh
* * * * * script_dosyasi
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
Bu konuda bir örnek daha vereyim. Örneğin aynı script dosyasını
her gün sabah 04:15 çalıştırmak için aşağıdaki satır cron jobları
arasına eklenebilir.
crontab -e
15 4 * * * /home/oracle/mycrontest.sh
****************************
Cron job görüntüleme ve tüm cron jobları silme
****************************
[oracle@oradb ~]$ crontab -l
5 * * * * /home/oracle/mycrontest.sh
[oracle@oradb ~]$ crontab -r
[oracle@oradb ~]$ crontab -l
no crontab for oracle
Yukarıdaki şekilde crontab -r komutu ile geçerli user için crontab boşaltılabileceği gibi isterseniz crontab -e kullanarak da görev ekleme, çıkarma veya görevlerde değişiklikler yapabilirsiniz.
Ek olarak aşağıdaki linkleri inceleyebilirsiniz.
Türkçe
----------------
http://www.belgeler.org/man/man5/man5-crontab.html
İngilizce
----------------
http://adminschoice.com/crontab-quick-reference
11 Aralık 2009 Cuma
Redolog dosyalarımın boyutunu nasıl değiştirebilirim?
Boyutu değiştirilmek istenen her redo log dosyasını içeren group ,
önce silinir sonra yeniden oluşturulur. Bu yöntemle redo log
dosyalarının yerleri ve isimleri de değiştirilebilir.
Bir log grubunu silebilmek için silmek istediğimiz grup statusu
INACTIVE olmalıdır. Redo log grubuna
ait her dosya birbirinin aynısı olacağı için büyüklükleri de aynı olmak zorundadır.
Farklı redo log gruplardaki dosyalar farklı büyüklükte olabilir.
Aşağıda örnek bir silme ve yeniden oluşturma işlemi gerçekleştirdim.
1. select * from v$log;
Bu sorguyla hangi log grubunun inactive olduğunu öğrenip
o log grubunu drop edeceğim.
2. alter database drop logfile group 1;
INACTIVE durumdaki redo log grubumu sildim.
3. alter database add logfile group 1 ('/u01/app/oracle/oradata/orcl/redo01a.log','/u01/app/oracle/oradata/orcl/redo01b.log') size 150m;
Burada yeni oluşturduğum redo log dosyasının boyutunu 150 mb olarak ayarladım.
Bu noktada 1 numaralı redo grubumuz için işlem tamam.
Şimdi log grobumuzu switch ederek diğer grupları da aynı şekilde
önce silip sonra yeniden oluşturarak işlemi tamamlayabiliriz.
Aşağıdaki sql leri çalıştırıp bir sonraki log file e geçebiliriz.
alter system switch logfile;
alter system checkpoint;
Redo log konusunda daha fazla bilgi
*************************************
Bir transaction, commit edildiğinde ; redo log file üzerinde bir fiziksel yazma gerçekleşir.
Commit istemi kontrolü kullanıcıya geri vermeden önce yazma işlemi tamamlanmak zorundadır.
Yazma işleminin çeşitli nedenlerle uzaması beklemeye neden olur. Redo log dosyalarının
boyutu bu beklemeyi etkileyen bileşenlerden birisidir.
Redo log I/O işlemleri eğer log dosyaları ayrı ve redo log dosyalarından başka veri içermeyen
bir fiziksel sürücüde ise optimize edilmiş olur. Eğer bu başarılabilirse,
yazma anında disk kafası zaten doğru konumda olduğundan
hareket ihtiyacı duymayacaktır ve yazma zamanı minimize edilmiş olur.
Çünkü log yazma işlemi bir sıralı yazma işlemidir ve sadece logwriter process i ile gerçekleştirilir.
Her hangibir veri kaybına karşı redo log dosyaları mirror edilebilir.
Bu Oracle tarafından yazılım tabanlı olarak yapılabileceği gibi (redo log multiplexing),
donanım temelli de olabilir. (RAID 1)
Redo log ların switch olması sonucu database checkpoint meydana gelir.
Checkpoint işlemi tamamlanmadan ilgili redo log grubu yeniden
kullanılabilir duruma (INACTIVE) gelmeyecektir. Bu nedenle büyük ve çok sayıda
redo log grubu olması daha iyi sonuç verebilir.Çok sayıda redo log grubu
oluşturulursa; redo log grubunun kendisinin içerdiği data aktif olarak
checkpointte kullanılırken, aynı redo log grubuna yeni redo log larının yazılması
ihtiyacının ortaya çıkma dolayısıyla wait oluşma ihtimali düşecektir.
Redo log dosyalarının büyütülmesi ise checkpoint oluşma sıklığını azaltacaktır.
Redo log dosyalarının uygun büyüklüğü transaction miktarına göre değişiklik gösterir.
Redo log dosyalarının boyutu sık sık log switch olayı meydana gelmeyecek kadar büyük olmalıdır.
64-256 mb aralığında 10-20 farklı redo log group olması alışılmadık bir durum değildir.
Genel tavsiye log switch sıklığının
15-20 dk. olması yönündedir. Redo log dosyasının boyutu konusundaki hesaplama
yoğun zamana göre yapılmalıdır.
v$log_history tablosunu kullanarak yoğun zamanlardaki log
değiştirme sıklığı kolayca incelenebilir.
select * from v$log_history
order by sequence# desc
Örneğin yoğun zamanda 7 dk aralıkla değişen 50 mb boyutunda log file lerimiz olsun.
Yeni log file buyukluğümüz yaklaşık 15-20 dk bir log switch
olmasını istediğimiz için 150 mb. civarinda olabilir.
Aşağıdaki sorgudan yola çıkarak, mevcut redo log gruplarını, member dosyaların yerlerini,
redo log dosyalarının boyutlarını ve son zamanlardaki log file değitirme sıklığını görebiliriz.
select l.sequence#,l.group#,l.bytes,lf.type,lf.member,l.first_time from v$log l, v$logfile lf
where l.group# = lf.group#
order by l.sequence#
Ayrıca "v$log" tablosundaki "status" alanı aşağıdaki değerleri alabilir.
UNUSED
*******************
Oracle daha once bu gruba hiç yazmamış.
Yeni yaratılan redo log grup için status.
CURRENT
*******************
Aktif olarak yazılan redo log grubu bu grup.
Log group drop edilemez.
ACTIVE
*******************
Oracle daha once bu gruba yazmış; yazılanlar instance recovery için gerekli.
Log group drop edilemez.
INACTIVE
*******************
Oracle daha once bu gruba yazmış; yazılanlar instance recovery için gerekli.
Log group drop edilebilir.
Konuyla ilgili aşağıdaki linkler de incelenebilir.
Ingilizce
****************
http://download.oracle.com/docs/cd/E11882_01/server.112/e10595/onlineredo002.htm
http://download.oracle.com/docs/cd/B10500_01/server.920/a96521/onlineredo.htm
Türkçe
****************
www.cagataycebi.com/oracle/oracle_redologs.pdf
http://www.gokhanatil.com/redo-log-dosyalarinin-boyutu-ne-kadar-olmali/
http://www.mysqlsupport.net/oracle-redo-log.html
önce silinir sonra yeniden oluşturulur. Bu yöntemle redo log
dosyalarının yerleri ve isimleri de değiştirilebilir.
Bir log grubunu silebilmek için silmek istediğimiz grup statusu
INACTIVE olmalıdır. Redo log grubuna
ait her dosya birbirinin aynısı olacağı için büyüklükleri de aynı olmak zorundadır.
Farklı redo log gruplardaki dosyalar farklı büyüklükte olabilir.
Aşağıda örnek bir silme ve yeniden oluşturma işlemi gerçekleştirdim.
1. select * from v$log;
Bu sorguyla hangi log grubunun inactive olduğunu öğrenip
o log grubunu drop edeceğim.
2. alter database drop logfile group 1;
INACTIVE durumdaki redo log grubumu sildim.
3. alter database add logfile group 1 ('/u01/app/oracle/oradata/orcl/redo01a.log','/u01/app/oracle/oradata/orcl/redo01b.log') size 150m;
Burada yeni oluşturduğum redo log dosyasının boyutunu 150 mb olarak ayarladım.
Bu noktada 1 numaralı redo grubumuz için işlem tamam.
Şimdi log grobumuzu switch ederek diğer grupları da aynı şekilde
önce silip sonra yeniden oluşturarak işlemi tamamlayabiliriz.
Aşağıdaki sql leri çalıştırıp bir sonraki log file e geçebiliriz.
alter system switch logfile;
alter system checkpoint;
Redo log konusunda daha fazla bilgi
*************************************
Bir transaction, commit edildiğinde ; redo log file üzerinde bir fiziksel yazma gerçekleşir.
Commit istemi kontrolü kullanıcıya geri vermeden önce yazma işlemi tamamlanmak zorundadır.
Yazma işleminin çeşitli nedenlerle uzaması beklemeye neden olur. Redo log dosyalarının
boyutu bu beklemeyi etkileyen bileşenlerden birisidir.
Redo log I/O işlemleri eğer log dosyaları ayrı ve redo log dosyalarından başka veri içermeyen
bir fiziksel sürücüde ise optimize edilmiş olur. Eğer bu başarılabilirse,
yazma anında disk kafası zaten doğru konumda olduğundan
hareket ihtiyacı duymayacaktır ve yazma zamanı minimize edilmiş olur.
Çünkü log yazma işlemi bir sıralı yazma işlemidir ve sadece logwriter process i ile gerçekleştirilir.
Her hangibir veri kaybına karşı redo log dosyaları mirror edilebilir.
Bu Oracle tarafından yazılım tabanlı olarak yapılabileceği gibi (redo log multiplexing),
donanım temelli de olabilir. (RAID 1)
Redo log ların switch olması sonucu database checkpoint meydana gelir.
Checkpoint işlemi tamamlanmadan ilgili redo log grubu yeniden
kullanılabilir duruma (INACTIVE) gelmeyecektir. Bu nedenle büyük ve çok sayıda
redo log grubu olması daha iyi sonuç verebilir.Çok sayıda redo log grubu
oluşturulursa; redo log grubunun kendisinin içerdiği data aktif olarak
checkpointte kullanılırken, aynı redo log grubuna yeni redo log larının yazılması
ihtiyacının ortaya çıkma dolayısıyla wait oluşma ihtimali düşecektir.
Redo log dosyalarının büyütülmesi ise checkpoint oluşma sıklığını azaltacaktır.
Redo log dosyalarının uygun büyüklüğü transaction miktarına göre değişiklik gösterir.
Redo log dosyalarının boyutu sık sık log switch olayı meydana gelmeyecek kadar büyük olmalıdır.
64-256 mb aralığında 10-20 farklı redo log group olması alışılmadık bir durum değildir.
Genel tavsiye log switch sıklığının
15-20 dk. olması yönündedir. Redo log dosyasının boyutu konusundaki hesaplama
yoğun zamana göre yapılmalıdır.
v$log_history tablosunu kullanarak yoğun zamanlardaki log
değiştirme sıklığı kolayca incelenebilir.
select * from v$log_history
order by sequence# desc
Örneğin yoğun zamanda 7 dk aralıkla değişen 50 mb boyutunda log file lerimiz olsun.
Yeni log file buyukluğümüz yaklaşık 15-20 dk bir log switch
olmasını istediğimiz için 150 mb. civarinda olabilir.
Aşağıdaki sorgudan yola çıkarak, mevcut redo log gruplarını, member dosyaların yerlerini,
redo log dosyalarının boyutlarını ve son zamanlardaki log file değitirme sıklığını görebiliriz.
select l.sequence#,l.group#,l.bytes,lf.type,lf.member,l.first_time from v$log l, v$logfile lf
where l.group# = lf.group#
order by l.sequence#
Ayrıca "v$log" tablosundaki "status" alanı aşağıdaki değerleri alabilir.
UNUSED
*******************
Oracle daha once bu gruba hiç yazmamış.
Yeni yaratılan redo log grup için status.
CURRENT
*******************
Aktif olarak yazılan redo log grubu bu grup.
Log group drop edilemez.
ACTIVE
*******************
Oracle daha once bu gruba yazmış; yazılanlar instance recovery için gerekli.
Log group drop edilemez.
INACTIVE
*******************
Oracle daha once bu gruba yazmış; yazılanlar instance recovery için gerekli.
Log group drop edilebilir.
Konuyla ilgili aşağıdaki linkler de incelenebilir.
Ingilizce
****************
http://download.oracle.com/docs/cd/E11882_01/server.112/e10595/onlineredo002.htm
http://download.oracle.com/docs/cd/B10500_01/server.920/a96521/onlineredo.htm
Türkçe
****************
www.cagataycebi.com/oracle/oracle_redologs.pdf
http://www.gokhanatil.com/redo-log-dosyalarinin-boyutu-ne-kadar-olmali/
http://www.mysqlsupport.net/oracle-redo-log.html
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.
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
IFS/Centura The End.
Merhaba,
IFS üzerine çalışmakta olduğum Uzmar Gemi İnşaa AŞ. den
"2009 Mayıs" tarihinde ayrıldım. Dolayısıyla artık IFS framework ve Centura ile
ilgili çalışmıyorum. Centura ve IFS hakkındaki muhtemelen son
yazılarımı, eski notlarımdan hareketle,
"2009 Ekim" ayında hazırlamış bulunuyorum. Faydalı olmasını umarım.
Bu nokta yeni IFS geliştiricilere tavsiyem bloğumdaki
centura ile ilgili pdf ve videoları , konuyla ilgili yazılarımı
ve zaten ellerindeki hazır örnek IFS exe sinin
centura kodlarını iyi incelemeleri olacaktır.
Akılda tutulması gereken bir diğer nokta,
esas itibariyle centura ile de örneğin delphi ile yapılan her uygulama
gerçekleştirilebilir ve gerçekleştirilmektedir. Centura ile şu yapılamaz,
bu yapılamazları çok dinleyen biri olarak aynı tepkilerin sizi yıldırmasına
izin vermemenizi tavsiye ediyorum. Ayrıca Centura, IFS tekelindeki bir ide değildir.
Bu ideyi Win32 Development için turkiyede kullanmakta olan,
görüştüğüm firmalar da vardır.
Centura IDE sini Team Developer ismiyle geliştirmekte olan
Unify firmasının web sitesini, daha fazla bilgi için inceleyebilirsiniz.
http://www.unify.com/Products/TeamDeveloper/default.aspx
http://www.unify.com/products/teamdeveloper/videos/ide/td_5.2_themed_ide.html
Gelecekte IFS Applications .net te çalışacak gibi görünüyor.
Centura kodlarını .net ortamına geçimekle ilgili çözümler sunan
IceTeaGroup firmasının, IFS uygulamasını örnek uygulama olarak göstermekte olduğu
aşağıdaki sayfayı ziyaret edebilirsiniz.
http://www.iceteagroup.com/Porting/CaseStudies.aspx
Bundan sonraki yazılarım genellikle yeni işim olan Oracle Database Yönetimi
ve linux üzerine olacak sanırım.
İyi çalışmalar.
IFS üzerine çalışmakta olduğum Uzmar Gemi İnşaa AŞ. den
"2009 Mayıs" tarihinde ayrıldım. Dolayısıyla artık IFS framework ve Centura ile
ilgili çalışmıyorum. Centura ve IFS hakkındaki muhtemelen son
yazılarımı, eski notlarımdan hareketle,
"2009 Ekim" ayında hazırlamış bulunuyorum. Faydalı olmasını umarım.
Bu nokta yeni IFS geliştiricilere tavsiyem bloğumdaki
centura ile ilgili pdf ve videoları , konuyla ilgili yazılarımı
ve zaten ellerindeki hazır örnek IFS exe sinin
centura kodlarını iyi incelemeleri olacaktır.
Akılda tutulması gereken bir diğer nokta,
esas itibariyle centura ile de örneğin delphi ile yapılan her uygulama
gerçekleştirilebilir ve gerçekleştirilmektedir. Centura ile şu yapılamaz,
bu yapılamazları çok dinleyen biri olarak aynı tepkilerin sizi yıldırmasına
izin vermemenizi tavsiye ediyorum. Ayrıca Centura, IFS tekelindeki bir ide değildir.
Bu ideyi Win32 Development için turkiyede kullanmakta olan,
görüştüğüm firmalar da vardır.
Centura IDE sini Team Developer ismiyle geliştirmekte olan
Unify firmasının web sitesini, daha fazla bilgi için inceleyebilirsiniz.
http://www.unify.com/Products/TeamDeveloper/default.aspx
http://www.unify.com/products/teamdeveloper/videos/ide/td_5.2_themed_ide.html
Gelecekte IFS Applications .net te çalışacak gibi görünüyor.
Centura kodlarını .net ortamına geçimekle ilgili çözümler sunan
IceTeaGroup firmasının, IFS uygulamasını örnek uygulama olarak göstermekte olduğu
aşağıdaki sayfayı ziyaret edebilirsiniz.
http://www.iceteagroup.com/Porting/CaseStudies.aspx
Bundan sonraki yazılarım genellikle yeni işim olan Oracle Database Yönetimi
ve linux üzerine olacak sanırım.
İyi çalışmalar.
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
Ö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.
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.
Kaydol:
Kayıtlar (Atom)