|
|
|
Как сохранить данные ( UNICODE) в БД MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
С Уважением к профессионалом. - Написал прогу на Excel ну все класно работает и данные в БД сохраняет. Но возникла одна ситуация необхадимо что бы символы сохранялись. Вожу, вставка символа "1/8" а он в БД абру гадабру заносит. - Я сохраняю записи из ехселя в БД Microsoft SQL 2000, возникла необхадимость сохранять символы. использую метод StrConv(ActiveSheet.Cells(C.Row, 3).Value, vbUnicode). - Иду смотрю в БД Microsoft SQL 2000 и вижу что данные не сохраняются. - Если руками занести символы в БД Microsoft SQL 2000, а затем извлечть в Excel то все нормально символы отражает. - заходил в форум читал но так и не понял в примерах как мне их использовать. Прошу помочь - вот код: - Подключил xlodbc32.dll; Xlodbc.xls; Xlquery.xls; - Может мне необхадима подключить типа ( Unicode.xls; Unicode.dll ), или что та я не настроил С уважениям к ВАМ ! Sub doljnost_zapomnit() Dim connection As Long Dim retcode As Long Dim query As String Dim s As String Dim x() As Byte tt = "DRIVER=SQL Server;UID=pol; PWD=123; Trusted_Connection=Yes;DATABASE=S2345;WSID=DIT-1111;APP=Microsoft Data Access Components;SERVER=DIT-1111\ITSERVIS" connection = SQLOpen(tt) ' подключаемся к серверу и БД For Each C In Worksheets("job_title").Range("A7:A65536") If C.Value = "" Then Exit For End If '------------------------------- ' Здесь я приобразую в Unicode Unicode_s = StrConv(ActiveSheet.Cells(C.Row, 3).Value, vbUnicode) '------------------------------- 'Удалить If ActiveSheet.Cells(C.Row, 2).Font.ColorIndex = 3 Then query = "update A_Doljnost set izm_zap=3 " & _ "where kod=" & Int(ActiveSheet.Cells(C.Row, 1).Value) SQLExecQuery connection, query End If 'Обнавить If ActiveSheet.Cells(C.Row, 1).Value <> "0" And ActiveSheet.Cells(C.Row, 2).Font.ColorIndex = 5 Then '------------------------------- ' Здесь Unicode_s - обнавления query = "update A_Doljnost set izm_zap=2, pni=" & Int(ActiveSheet.Cells(C.Row, 2).Value) & _ ", rname='" & Unicode_s & _ "', rn_txt='" & Trim(ActiveSheet.Cells(C.Row, 4).Value) & _ "' where kod=" & Int(ActiveSheet.Cells(C.Row, 1).Value) SQLExecQuery connection, query End If 'Добавить If ActiveSheet.Cells(C.Row, 1).Value = 0 Then query = "INSERT INTO A_Doljnost (pni, rname, rn_txt, izm_zap)" & _ " VALUES " & _ "(" & Int(ActiveSheet.Cells(C.Row, 2).Value) & ", '" & _ Unicode_s & "', '" & _ Trim(ActiveSheet.Cells(C.Row, 4).Value) & "', 1)" Worksheets("BD").Cells(2, 4).Value = query SQLExecQuery connection, query End If Next retcode = SQLClose(connection) ' Закрываем подключение к БД End Sub Sub doljnost_obnavit() Sheets("job_title").Unprotect Password:="1917" Worksheets("job_title").Range("A7:D65536").ClearContents If Worksheets("job_title").Cells(1, 1).Value <> -1 Then w = "izm_zap=1 or izm_zap=2" Else w = "izm_zap=3" End If w = w + " order by pni" sqlstring = "SELECT kod,pni,rname,rn_txt FROM A_Doljnost where " & w connstring = Worksheets("BD").Cells(2, 2).Value With Sheets("job_title").QueryTables.Add(connection:=connstring, _ Destination:=Range("A7"), Sql:=sqlstring) .FieldNames = False .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = False .RefreshOnFileOpen = False .BackgroundQuery = False .RefreshStyle = xlInsertDeleteCells .SavePassword = True .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .PreserveColumnInfo = True .Refresh BackgroundQuery:=False End With x = 7 For Each C In Worksheets("job_title").Range("A7:A65536") If C.Value = "" Then Exit For End If x = x + 1 Next Worksheets("job_title").Range("A7:D65536").Locked = True If Worksheets("job_title").Cells(7, 1).Value <> "" Then Worksheets("job_title").Range("A7" + ":D" + Trim(Str(x - 1))).Locked = False End If Sheets("job_title").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="1917" End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 20:12 |
|
||
|
Как сохранить данные ( UNICODE) в БД MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
Ну, вообще-то строка VB и так содержит символы в Uencode - нефиг их еще конвертить. Поле таблицы на SQL-сервере должно иметь один из типов nchar, nvarchar, ntext. Все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 21:34 |
|
||
|
Как сохранить данные ( UNICODE) в БД MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
когда вносишь или меняешь значения для UNICODE делай так dim s as string s="Update Table set FUnicode=N'" & Unicode & "'" запустить на выполнение аналогично для вставки само поле в базе должно быть типа nchar, nvarchar, ntext. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 23:20 |
|
||
|
Как сохранить данные ( UNICODE) в БД MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
michael R само поле в базе должно быть типа nchar, nvarchar, ntext. ... и иметь размер в 2 раза больше, чем был varchar, ибо в юникоде 1 символ занимает 2 байта, а не 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2007, 09:42 |
|
||
|
Как сохранить данные ( UNICODE) в БД MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
Melkiades... и иметь размер в 2 раза больше, чем был varchar, ибо в юникоде 1 символ занимает 2 байта, а не 1. Вообще-то размер поля в базе указывается в символах, а не в байтах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2007, 10:31 |
|
||
|
Как сохранить данные ( UNICODE) в БД MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
AndrF Melkiades... и иметь размер в 2 раза больше, чем был varchar, ибо в юникоде 1 символ занимает 2 байта, а не 1. Вообще-то размер поля в базе указывается в символах, а не в байтах... Простите, некорректно выразился. Имелось в виду - в итоге весить такие данные будут в 2 раза больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2007, 10:36 |
|
||
|
Как сохранить данные ( UNICODE) в БД MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
dim s as string s="Update Table set FUnicode=N'" & Unicode & "'" - Я этот метод применил в БД вижу каркули. - по инструкции я вижу что по одной букве сохранения производится, а ккак сразу текст сохранить dim s as string Unicodex = "Книга ⅔ печать ⅔". s="Update Table set FUnicode=N'" & Unicodex & "'" Уточняю как сохранить это текст "Книга ⅔ печать ⅔" в БД MS SQL 2000. В предыдущем примере я писал свой код С Уважениям к профессионалом. Извините если что не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2007, 13:54 |
|
||
|
Как сохранить данные ( UNICODE) в БД MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
Гы-гы :) И как Вы это в БД смотрите? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2007, 16:15 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34779375&tid=2163445]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 383ms |

| 0 / 0 |
