• 5 odgovora
  • 4.596 pregleda
UDF funkcija, UPPER i ČĆŠŽ 30.05.2010. u 08:28 · pre 199 meseci #1
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.
Re: UDF funkcija, UPPER i ČĆŠŽ 31.05.2010. u 08:37 · pre 199 meseci #2
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.
Re: UDF funkcija, UPPER i ČĆŠŽ 31.05.2010. u 08:50 · pre 199 meseci #3
Meni upper radi normalno sa našima slovima, koristim WIN1250. Koji charset koristiš, možda je do toga?
Re: UDF funkcija, UPPER i ČĆŠŽ 31.05.2010. u 08:50 · pre 199 meseci #4
Upper funkcija radi sa "našim" slovima. Podesi za bazu Default character set: UNICODE_FSS.
Re: UDF funkcija, UPPER i ČĆŠŽ 31.05.2010. u 12:16 · pre 199 meseci #5
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
Re: UDF funkcija, UPPER i ČĆŠŽ 13.10.2010. u 10:59 · pre 195 meseci #6
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme