Avatar billede Kim Neesgaard Seniormester
01. december 2003 - 13:13 Der er 2 kommentarer og
2 løsninger

Kinesiske tegn

Jeg har en SQL servertabel som jeg skal opdatere med en spansk, portugisisk og kinesisk oversættelse. Jeg bruger følgende SQL:

UpdateSQL = "UPDATE dbo_tbl_Inputs SET dbo_tbl_Inputs.FieldNameSynonym = '" & rsTrans("Translation") & "' " & _
"WHERE dbo_tbl_Inputs.Skey = " & tmpSkey & " AND dbo_tbl_Inputs.Lang = '" & Lang & "'"
CurrentProject.Connection.Execute UpdateSQL

rsTrans("Translation") er pointeren i Access tabellen og der er tale om et memofelt. Spansk og portugisisk gemmes fint, men de kinesiske tegn gemmes som fx ?? (Eve) ???? og hvis man viser tabelværdien fra brugerfladen i en textbox, vises også kun ?. Inden jeg gemmer de kinesiske tegn, viser jeg rsTrans("Translation") i en label og her er det de rigtige kinesiske tegn, der ses.

Kan nogen hjælpe med et til til at få gemt de kinesiske tegn rigtigt i SQL Servertabellen?
Avatar billede trer Nybegynder
03. december 2003 - 09:35 #1
Umiddelbart ville jeg tro, at det hjælper hvis du bruger en collation i forbindelse med indsættelse af teksten. I SQL Server ville du kalde funktionen Collate().  Men når du kalder sql serveren via en linked access tabel ... hmmm....

Du kan prøve nogle af de her fremgangsmåder:

En mulighed er, at du laver et separat updateable view (hvor du bruger collate) og linker det. Alle kinesiske opdateringer skal så ske via det view.

Sidste mulighed er, at du benytter en varbinary i sql server tabellen fremfor en text/varchar. Den gemmer det "rene" bitmønster uden at lave fortolkning. Du bliver så blot begrænset til max. 8000 bytes i hver række (i unicode altså max 4000 tegn).
Avatar billede Kim Neesgaard Seniormester
03. december 2003 - 22:44 #2
Tak for råd! Jeg har dog løst det på en lidt omstændig måde: jeg lader en pointer spurte op og ned i et recordset for SQL server tabellen og et for  Accesstabellen og overfører direkte fra pointer til pointer. Ikke så elegant, men det virker!
Avatar billede Kim Neesgaard Seniormester
18. december 2003 - 14:14 #3
Jeg fandt faktisk en fin måde at gøre det på! Brug

DoCmd.RunSQL UpdateSQL

i stedet for

CurrentProject.Connection.Execute UpdateSQL

på nøjagtig den samme SQL sætning.

Den første kan 'kinesisk', men det kan den sidstnævnte ikke.
Avatar billede Kim Neesgaard Seniormester
17. april 2004 - 20:34 #4
Jeg afslutter denne (må også være på tide!).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester