powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сохранить данные ( UNICODE) в БД MS SQL 2000
9 сообщений из 9, страница 1 из 1
Как сохранить данные ( UNICODE) в БД MS SQL 2000
    #34779312
I123456789I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С Уважением к профессионалом.
- Написал прогу на 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
...
Рейтинг: 0 / 0
Как сохранить данные ( UNICODE) в БД MS SQL 2000
    #34779375
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, вообще-то строка VB и так содержит символы в Uencode - нефиг их еще конвертить.

Поле таблицы на SQL-сервере должно иметь один из типов nchar, nvarchar, ntext.

Все.
...
Рейтинг: 0 / 0
Как сохранить данные ( UNICODE) в БД MS SQL 2000
    #34779477
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда вносишь или меняешь значения для UNICODE делай так

dim s as string
s="Update Table set FUnicode=N'" & Unicode & "'"
запустить на выполнение

аналогично для вставки

само поле в базе должно быть типа nchar, nvarchar, ntext.
...
Рейтинг: 0 / 0
Как сохранить данные ( UNICODE) в БД MS SQL 2000
    #34779868
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael R
само поле в базе должно быть типа nchar, nvarchar, ntext.
... и иметь размер в 2 раза больше, чем был varchar, ибо в юникоде 1 символ занимает 2 байта, а не 1.
...
Рейтинг: 0 / 0
Как сохранить данные ( UNICODE) в БД MS SQL 2000
    #34783450
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkiades... и иметь размер в 2 раза больше, чем был varchar, ибо в юникоде 1 символ занимает 2 байта, а не 1.

Вообще-то размер поля в базе указывается в символах, а не в байтах...
...
Рейтинг: 0 / 0
Как сохранить данные ( UNICODE) в БД MS SQL 2000
    #34783466
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrF Melkiades... и иметь размер в 2 раза больше, чем был varchar, ибо в юникоде 1 символ занимает 2 байта, а не 1.

Вообще-то размер поля в базе указывается в символах, а не в байтах...
Простите, некорректно выразился. Имелось в виду - в итоге весить такие данные будут в 2 раза больше.
...
Рейтинг: 0 / 0
Как сохранить данные ( UNICODE) в БД MS SQL 2000
    #34784389
I123456789I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
В предыдущем примере я писал свой код

С Уважениям к профессионалом.
Извините если что не так
...
Рейтинг: 0 / 0
Как сохранить данные ( UNICODE) в БД MS SQL 2000
    #34784996
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гы-гы :) И как Вы это в БД смотрите? :)
...
Рейтинг: 0 / 0
Как сохранить данные ( UNICODE) в БД MS SQL 2000
    #34785144
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что значит по одной букве сохранения производится
попробуй без StrConv внести только русские буквы
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сохранить данные ( UNICODE) в БД MS SQL 2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]