Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Opet problemi sa unkodom

[es] :: MS SQL :: Opet problemi sa unkodom

[ Pregleda: 3493 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cula99
Vladimir
Programer, NFS
Novi Sad

Član broj: 177736
Poruke: 8
*.static.sbb.rs.



Profil

icon Opet problemi sa unkodom09.04.2008. u 09:29 - pre 194 meseci
Programira se u Delphi-ju da ude jasnije. Znam da se ovo može rešiti ako pre poziva insert-a proverim vrednost za IME ali mi treba rešenje preko SQL servera

(COLLATE postoji samo da ga ne pišem):

CREATE TABLE TABLE_A
(ID VARCHAR(50) NOT NULL,
IME NVARCHAR(100) NULL)

insert za tu tabelu

INSERT INTO TABLE_A(ID, IME)
VALUES(:ID, N:IME)

Kada insertu prosledis parametre
'876878', 'čičak' sve je u redu

INSERT INTO TABLE_A(ID, IME)
VALUES('876878', N'čičak')

ali ako kojim slučajem pošalješ:
'879721', NULL javlja grešku
INSERT INTO TABLE_A(ID, IME)
VALUES('879721', NNULL)

Probao sam sa IF
DECLARE @p NVARCHAR(50)
IF :IME IS NULL
SET @p=NULL
ELSE
SET @p=N:IME

u ovom sličaju insert je ovakav:

INSERT INTO TABLE_A(ID, IME)
VALUES(:ID, @p)

tada prijavi grešku, ne može naći colonu sa imenom NNULL

Kako rešiti ovaj problem?
Čulex
 
Odgovor na temu

Vic
Error974
BI&SE
Beograd

Član broj: 16118
Poruke: 396
*.imlek.co.yu.



+49 Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 09:34 - pre 194 meseci
Kao prvo da li ti je kod atributa ime oznaceno allow nulls? Druga stvar, umesto da u insertu prosledis null, probaj sa '' ili napravi takav insert koji ce u slucaju null vrednosti upisivati samo id.
ERROR974
 
Odgovor na temu

cula99
Vladimir
Programer, NFS
Novi Sad

Član broj: 177736
Poruke: 8
*.static.sbb.rs.



Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 10:02 - pre 194 meseci
Kako misliš atribute označava kao alow nulls? Ne mogu da pravim takve inserte jer imam preko 100 formi na kojima to treba uraditi, a ceo sistem je osmišljen da se insertu šalju parametri.
Čulex
 
Odgovor na temu

Vic
Error974
BI&SE
Beograd

Član broj: 16118
Poruke: 396
*.imlek.co.yu.



+49 Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 10:12 - pre 194 meseci
Nisam dobro pogledao sta si napisao, opcija za allow nulls ti je ukljucena tako da to nije problem. Ovo definitivno radi na MSSQL-u

CREATE TABLE TABLE_A
(ID VARCHAR(50) NOT NULL,
IME NVARCHAR(100) NULL)

INSERT INTO TABLE_A(ID, IME)
VALUES('879721', null)
ERROR974
 
Odgovor na temu

cula99
Vladimir
Programer, NFS
Novi Sad

Član broj: 177736
Poruke: 8
*.static.sbb.rs.



Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 10:24 - pre 194 meseci
Server hoće da uradi ovo kad je :IME = NULL

INSERT INTO TABLE_A(ID, IME)
VALUES('879721', NNULL)

a ovo bas ne radi i pravi probleme

[Ovu poruku je menjao cula99 dana 09.04.2008. u 11:36 GMT+1]
Čulex
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
91.150.99.*

Jabber: DarkMan


Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 11:20 - pre 194 meseci
A to NNULL bi trebao da bude nesto kao na fazon unicode NULL?
 
Odgovor na temu

cula99
Vladimir
Programer, NFS
Novi Sad

Član broj: 177736
Poruke: 8
*.static.sbb.rs.



Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 11:43 - pre 194 meseci
Kad ubacis ovaj text u komponentu:

INSERT INTO TABLE_A(ID, IME)
VALUES(:ID, N:IME)

ako je IME neki string('čiča') SQL na serveru je ovaj


INSERT INTO TABLE_A(ID, IME)
VALUES(:ID, N'čiča')

u bazu upiše 'čiča'

ako je parametar :IME NULL serveru šalje:

INSERT INTO TABLE_A(ID, IME)
VALUES(:ID, NNULL)

Problem je i u IF-u
ako ga ja pitam

IF nešto
x=5
else
x=y

ako je 'nešto' tacno na x=y ne bi trebalo da se osvrne uopšte
Čulex
 
Odgovor na temu

Vic
Error974
BI&SE
Beograd

Član broj: 16118
Poruke: 396
*.imlek.co.yu.



+49 Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 11:54 - pre 194 meseci
Citat:
cula99: Kad ubacis ovaj text u komponentu:

INSERT INTO TABLE_A(ID, IME)
VALUES(:ID, N:IME)


Mislim da te niko bas u potpunosti ne razume. Na pocetku si napisao da se program radi u Delphiju, a ovde koliko vidim imas problem sa SQL-om. Prvo pojasni kako je sve planirano da radi, stored procedure, iz delphi koda.... Kako to gore navedeni tekst ubacujes u komponentu?? Koju komponentu. Mislim ovo je sve jako zbunjujuce, a stvar je kranje prosta i elementarna.
ERROR974
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
91.150.99.*

Jabber: DarkMan


Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 12:02 - pre 194 meseci
NNULL ne postoji u SQL-u i zato ti izbacije gresku.
 
Odgovor na temu

cula99
Vladimir
Programer, NFS
Novi Sad

Član broj: 177736
Poruke: 8
*.static.sbb.rs.



Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 12:35 - pre 194 meseci
1. Postoji TQuery u Delphi-ju:

SELECT ID, IME
FROM TABLE_A

2. Pored toga imas komponentu TQueryUpdate

u TQueryUpdate.InsertSQL je ovaj sql:

INSERT INTO TABLE_A(ID, IME)
VALUES(:ID, N:IME)

3a. Kad hoces da ubacis neki rekord uradis ovo:

TQuery.Insert;
TQuery.ParamByName('ID').AsString := '123456';
TQuery.ParamByName('IME').AsString := 'čiča';
TQuery.Post;

Komponenta TQueryUpdate pošalje ovaj Query:

INSERT INTO TABLE_A(ID, IME)
VALUES( '123456', N'čiča')

na Microsoft SQL Server

3b. Kad hoces da ubacis samo ID rekord uradis ovo:

TQuery.Insert;
TQuery.ParamByName('ID').AsString := '123456';
TQuery.ParamByName('IME').AsString := NULL;
TQuery.Post;

Komponenta TQueryUpdate pošalje ovaj Query:

INSERT INTO TABLE_A(ID, IME)
VALUES( '123456', NNULL)

na Microsoft SQL Server i prijavi grečku

Pitanje je kako zaobići tu grečku, naterati server da u tom slučaju 3b uradi ovo:

INSERT INTO TABLE_A(ID, IME)
VALUES( '123456', NULL)

Ne radim u delphi-ju, nego u programskom rešenju koje je napravljeno u delphi-ju. U njemu se programira slično kao u delphi-ju. U programu postoji komponenta koja sadrži SQL-ove, ima i parametre, po potrebi ih šalje na SQL server(kao u Delphiju).








Čulex
 
Odgovor na temu

Vic
Error974
BI&SE
Beograd

Član broj: 16118
Poruke: 396
*.imlek.co.yu.



+49 Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 12:56 - pre 194 meseci
Citat:
DarkMan: NNULL ne postoji u SQL-u i zato ti izbacije gresku.


Ostaje ti da probas da umesto null prosledis ''.

ERROR974
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
91.150.99.*

Jabber: DarkMan


Profil

icon Re: Opet problemi sa unkodom09.04.2008. u 13:22 - pre 194 meseci
Ajd probaj da u TQueryUpdate.InsertSQL ubacis ovaj sql:

Code:

INSERT INTO TABLE_A(ID, IME)
VALUES(:ID, (case when :IME is null then null else N:IME end))


Edit:

Nece moci, opet ce generisati NNULL i izbaciti gresku, probaj:

Code:

INSERT INTO TABLE_A(ID, IME)
VALUES(:ID, convert(nvarchar, :IME) )
 
Odgovor na temu

[es] :: MS SQL :: Opet problemi sa unkodom

[ Pregleda: 3493 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.