21.08.2009

Sequence değerini değiştirmek.

Oracle'da sequence'lerin değerini, increment değeri ile oynayarak değiştirmek mümkündür. sqx_test adında bir sequence oluşturup 1 olan sıra numarasını 500 olarak değiştiriyoruz.


SQL> create sequence sqx_test;

Sequence created

SQL> select sqx_test.nextval from dual;

NEXTVAL
----------
1

SQL> alter sequence sqx_test increment by 499;

Sequence altered

SQL> select sqx_test.currval from dual;

CURRVAL
----------
1

SQL> select sqx_test.nextval from dual;

NEXTVAL
----------
500

SQL> alter sequence sqx_test increment by 1;

Sequence altered
SQL>

11.08.2009

Excel'de sayı sistemleri...

Excel'de 32 lik sayı sisteminden 10'luk sayı sistemine çevirmek için aşağıdaki fonksiyon kullanılabilir :

Türkçe Excel:

=EĞER(A1="";"0";TOPLA.ÇARPIM( KUVVET(32;UZUNLUK(A1) - SATIR( DOLAYLI("1:"&UZUNLUK(A1))));(KOD(BÜYÜKHARF(PARÇAAL(A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1)));1))) -48*(KOD(PARÇAAL(A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1)));1))<58) -55*(KOD(PARÇAAL(A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1)));1))>64))))


İngilizce Excel:

=IF(A1="","0",SUMPRODUCT( POWER(32,LEN(A1) - ROW(INDIRECT("1:"&LEN(A1)))),
(CODE(UPPER(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))) - 48*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<58) - 55*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>64))))

20.07.2009

asp.net'te web.config'ten parametre okumak

asp.net ile uygulama geliştirirken, uygulamanın parametrik olmasını isteyebilirsiniz. Bunun için web.config dosyasında appSettings alanı içerisine ihtiyaç duyduğunuz parametreleri şu şekilde tanımlamalısınız :


<appSettings>
<add key="username" value="kullaniciadi" />
<add key="password" value="pass" />
</appSettings>

program içerisinden bu değerleri okumak için :

Username = ConfigurationSettings.AppSettings["username"];
Password = ConfigurationSettings.AppSettings["password"];

10.07.2009

Delphi ile web servis'e parametre gönderim problemi

ASP.NET (VS 2005) ile oluşturulmuş bir web servisine parametre gönderemedim. Parametresiz olarak çağırıldığında problem yok, parametre ile çağrıldığında, parametre değeri olarak null gidiyor.

Delphi ile oluşturulan kod içerisine initialization altına:


InvRegistry.RegisterInvokeOptions(TypeInfo(SoapAdi), ioDocument);


satırını ekleyince problem çözüldü.

6.02.2009

firebird'de sayıları yazıya çeviren procedure

Bir zamanlar yazmış olduğum, firebird veritabanı üzerinde sayıları yazıya çeviren procedure.

Kullanım:

SELECT p.TUTARYAZI FROM YAZIYLA(111023.03) p

TUTARYAZI
---------
YÜZONBİRBİNYİRMİÜÇ YTL ÜÇ YKR



Kaynak kodları...


SET TERM ^ ;
CREATE PROCEDURE BASAMAKYAZI (
BASAMAK Integer,
RAKAM Integer )
RETURNS (
YAZI Varchar(20) )
AS
BEGIN
YAZI= case basamak
when 1 then
case rakam
when 1 then 'BİR'
when 2 then 'İKİ'
when 3 then 'ÜÇ'
when 4 then 'DÖRT'
when 5 then 'BEŞ'
when 6 then 'ALTI'
when 7 then 'YEDİ'
when 8 then 'SEKİZ'
when 9 then 'DOKUZ'
end
when 2 then
case rakam
when 1 then 'ON'
when 2 then 'YİRMİ'
when 3 then 'OTUZ'
when 4 then 'KIRK'
when 5 then 'ELLİ'
when 6 then 'ALTMIŞ'
when 7 then 'YETMİŞ'
when 8 then 'SEKSEN'
when 9 then 'DOKSAN'
end
when 3 then
case rakam
when 1 then 'YÜZ'
when 2 then 'İKİYÜZ'
when 3 then 'ÜÇYÜZ'
when 4 then 'DÖRTYÜZ'
when 5 then 'BEŞYÜZ'
when 6 then 'ALTIYÜZ'
when 7 then 'YEDİYÜZ'
when 8 then 'SEKİZYÜZ'
when 9 then 'DOKUZYÜZ'
end
end;
SUSPEND;
END^
SET TERM ; ^








SET TERM ^ ;
CREATE PROCEDURE YAZIYLA (
TUTAR Numeric(18,2) )
RETURNS (
TUTARYAZI Varchar(300) )
AS
DECLARE VARIABLE tutarstr VARCHAR(50);
DECLARE VARIABLE yazi VARCHAR(50);
DECLARE VARIABLE len integer;
DECLARE VARIABLE tamsayistr VARCHAR(50);
DECLARE VARIABLE tamsayiuz integer;
DECLARE VARIABLE kesirstr VARCHAR(2);
DECLARE VARIABLE i integer;
DECLARE VARIABLE rakam integer;
DECLARE VARIABLE basamak integer;
DECLARE VARIABLE uclubasamak integer;
BEGIN

tutarstr=tutar;
len = 0;
TUTARYAZI = '';
len= CHAR_LENGTH(tutarstr);

IF (len = 0) THEN
BEGIN
TUTARYAZI = 'SIFIR';
END
tamsayiuz = len-3;
tamsayistr = SUBSTRING(tutarstr FROM 1 FOR tamsayiuz);
kesirstr = SUBSTRING(tutarstr FROM len-1 FOR 2);

i = 1;
uclubasamak = tamsayiuz;
WHILE (uclubasamak>3) DO BEGIN
uclubasamak = uclubasamak-3;
END



-- Tam kısmı
WHILE (i<=tamsayiuz) DO
BEGIN
rakam = SUBSTRING(tamsayistr FROM i FOR 1);
basamak = tamsayiuz-i+1;

IF ((tamsayiuz=1) AND rakam=0) THEN TUTARYAZI = 'SIFIR';


IF (( rakam>0 ) and (not ( tamsayiuz = 4 and basamak = 4 and uclubasamak = 1 ))) THEN
BEGIN
EXECUTE PROCEDURE BASAMAKYAZI(:uclubasamak,:rakam) RETURNING_VALUES :YAZI;
TUTARYAZI = TUTARYAZI || TRIM(YAZI);
END

IF ((BASAMAK=4) AND (TUTARYAZI not like '%MİLYON' and TUTARYAZI not like '%MİLYAR')) THEN TUTARYAZI = TUTARYAZI||'BİN' ;
IF ((BASAMAK=7) AND ( TUTARYAZI not like '%MİLYAR' )) THEN TUTARYAZI = TUTARYAZI || 'MİLYON';
IF (BASAMAK=10) THEN TUTARYAZI = TUTARYAZI || 'MİLYAR';

i = i + 1;
uclubasamak = uclubasamak - 1;
IF (uclubasamak = 0) THEN uclubasamak = 3;
END
TUTARYAZI = TUTARYAZI||' YTL ';

-- Kuruş Kısmı
IF (CAST (kesirstr AS INTEGER)>0) THEN
BEGIN
rakam = SUBSTRING(kesirstr FROM 1 FOR 1);
IF ( rakam > 0 ) THEN
BEGIN
EXECUTE PROCEDURE BASAMAKYAZI(2,:rakam) RETURNING_VALUES :YAZI;
TUTARYAZI= TUTARYAZI||TRIM(YAZI);
END

rakam = SUBSTRING(kesirstr FROM 2 FOR 1);
IF ( rakam > 0 ) THEN
BEGIN
EXECUTE PROCEDURE BASAMAKYAZI(1,:rakam) RETURNING_VALUES :YAZI;
TUTARYAZI= TUTARYAZI||TRIM(YAZI);
END
TUTARYAZI= TUTARYAZI||' YKR';
END

SUSPEND;
END^
SET TERM ; ^

5.02.2009

oracle substr fonksiyonu

SUBSTR (string, başlangıç [, uzunluk ])
Fonksiyonu string içerisinden başlangıç karakterinden uzunluk kadar olan kısmı alır.


SQL> select Substr('Zeki Güven',6,5) from dual;

SUBSTR('ZEKIGÜVEN',6,5)
--------------------------------
Güven

Eğer uzunluk belirtilmezse, string'in başlangıç olarak belirtilen pozisyondan başlıyarak, string'in tamamını alır.


SQL> select Substr('Zeki Güven',6) from dual;

SUBSTR('ZEKIGÜVEN',6)
--------------------------------
Güven


başlangıç pozisyonu pozitif bir sayı olursa string'in başından, negatif bir sayı olursa string'in son tarafından başlar.


SQL> select Substr('Zeki Güven',3) from dual;

SUBSTR('ZEKIGÜVEN',3)
--------------------------------
ki Güven

SQL> select Substr('Zeki Güven',-3) from dual;

SUBSTR('ZEKIGÜVEN',-3)
--------------------------------
ven

SQL> select Substr('Zeki Güven',-10,4) from dual;

SUBSTR('ZEKIGÜVEN',-10,4)
--------------------------------
Zeki

31.01.2009

oracle replace fonksiyonu

REPLACE(string, aranacak_string [, değiştirilecek_string ] ) fonksiyonu string parametresi içerisinde aranacak_string arayıp, değiştirilecek_string ile değiştirir. Bütük küçük harf ayırımını dikkate alır. değiştirilecek_string belitilmezse aranacak_string, string içinden kaldırır.


SQL> select Replace('Zeki Güven','Z','C') from dual;

REPLACE('ZEKIGÜVEN','Z','C')
---------------------------------------------------
Ceki Güven

SQL> select Replace('Zeki Güven','z','C') from dual;

REPLACE('ZEKIGÜVEN','Z','C')
---------------------------------------------------
Zeki Güven

SQL> select Replace('Zeki Güven','e','x') from dual;

REPLACE('ZEKIGÜVEN','E','X')
---------------------------------------------------
Zxki Güvxn

SQL> select Replace('Zeki Güven','e',null) from dual;

REPLACE('ZEKIGÜVEN','E',NULL)
--------------------------------
Zki Güvn

SQL> select Replace('Zeki Güven','e') from dual;

REPLACE('ZEKIGÜVEN','E')
--------------------------------
Zki Güvn