[ prginfo @ 30.05.2010. 08:28 ] @
Koristim Firebird 2.1.3

Pročitao sam više postova, ali ni jedno konkretno rešenje.

Problem je sa funkcijom UPPER, koja ne deluje na slova ć,đ,ž...

Da li može neko da krene ovde da napravi neku UDF funkciju koja bi se stavila na server i radila UPPER.

Ako neko može, neka da početne korake, smernice, ali malo konkretnije, a ako je moguće, ne link ka Firebird dokumentaciji.

Hvala.

P.S.
Ako neko ima gotovu UDF funkciju, a želi da je podeli i objasni, molio bih da to učini.
[ prginfo @ 31.05.2010. 08:37 ] @
Pretpostavljam da neko sigurno ima, pa bih ga molio da podeli sa svima

UDF funkciju koja radi UPPER za naša slova.

Ako je neko ovo rešio na drugi način, bilo bi dobro da podeli sa svima.

Mislim da je ovo problem koji svi imaju.

Hvala.
[ schild @ 31.05.2010. 08:50 ] @
Meni upper radi normalno sa našima slovima, koristim WIN1250. Koji charset koristiš, možda je do toga?
[ Branko @ 31.05.2010. 08:50 ] @
Upper funkcija radi sa "našim" slovima. Podesi za bazu Default character set: UNICODE_FSS.
[ prginfo @ 31.05.2010. 12:16 ] @
Probao sam sledee varijante:

baza:
CHARSET
UNICODE FSS, WIN1250
default font charset
DEFAULT CHARSET
PXV SLOV
EASTEUROPEAN CHARSET

tabela:
pokušao sam i sa opcijom da na polju tabele podesim CHARSET I COLLATION

Ni jedna varijanta mi ne funkcioniše sa YU slovima, s tim što mi UNICODE FSS prijavljuje i problem u konverziji.

Da li neko zna kombinaciju koja je najbolja i koja funkcioniše.

Verzija Firebirda je 2.1.3, a kačim se na nju preko D2007
[ doroz @ 13.10.2010. 10:59 ] @
Code:
DECLARE EXTERNAL FUNCTION VELIKASLOVA
    CSTRING(500)
    RETURNS CSTRING(500)
    ENTRY_POINT 'VelikaSlova' MODULE_NAME 'ZFireBirdUDF.dll';


Code:
function VelikaSlova(s: PChar): PChar;
var
   sTmp: String;
begin
   sTmp := s;

   sTmp := UpperCase(sTmp);
   sTmp := AnsiReplaceStr(sTmp, 'č', 'Č');
   sTmp := AnsiReplaceStr(sTmp, 'ć', 'Ć');
   sTmp := AnsiReplaceStr(sTmp, 'š', 'Š');
   sTmp := AnsiReplaceStr(sTmp, 'đ', 'Đ');
   sTmp := AnsiReplaceStr(sTmp, 'ž', 'Ž');

   Result := PChar(sTmp);
end;


Nadam se da ce ti ovo pomoci