название поля в Access или как убрать пробел((
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > название поля в Access или как убрать пробел((

название поля в Access или как убрать пробел((

Ответ
Поиск в этой теме
Непрочитано 02.08.2006, 07:53 #1
название поля в Access или как убрать пробел((
Димас
 
джедай
 
Магадан
Регистрация: 31.01.2005
Сообщений: 460

На VBA написал программку.
В ней подключается база данных Access.
Все работает, все нормально, но столкнулся с такой проблемой:
если в имени поля есть "-", например Name-ID, то возникают проблемы
например пишу MsgBox !Name-ID
редактор автокада автоматически добавляет пробел перед и после знака "-", получается MsgBox !Name - ID
естесственно поля "Name - ID" у меня в базе нет
как это отключить? это где-то в настройках редактора спрятано? или это как-то по другому обходиться?
Просмотров: 7406
 
Непрочитано 02.08.2006, 09:29
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408


Интересная методика обращения к полю... Это из какого VBA? Из Access или CAD'овского?
Потому как обычно все же объявляется Recordset, открывается по методу примерно такому (даю вариант соединения через ADO):
Код:
[Выделить все]
Dim rs as adodb.recordset
Dim fld
Set rs = New Adodb.recordset
rs.Open "select * from _tablename;", AdodcConnection ' Тут режимы блокировки
For Each fld In rs.Fields
  MsgBox fld
Next fld
Или все не так?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.08.2006, 09:49
#3
Димас

джедай
 
Регистрация: 31.01.2005
Магадан
Сообщений: 460
<phrase 1=


ок)) приведу больше кода) приемрно вот это я вешаю на инициализацию формы..
Код:
[Выделить все]
oAccess.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & "C:\test.mdb" & ";"
Dim oRecordset As New ADODB.Recordset
oRecordset.Open "Select * From Test", oAccess, adOpenKeyset
With oRecordset
Do While Not .EOF
MsgBox !Name-ID
.MoveNext
Loop
.Close
End With
если я в вашем коде заменю Fields на Name-ID работать не будет?
Димас вне форума  
 
Непрочитано 02.08.2006, 10:16
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408


"вашем" - это чьем? умоляю прочитать подпись
В коде, который показан, идет перебор не полей, а записей. Это все же немного другая песня.
Даже если использовать подобный подход, рекомендовал бы нечто примерно такого типа:
Код:
[Выделить все]
With oRecordset
  Do While Not .EOF
    MsgBox CStr(.Fields("Name-ID").Name ) & " : " & Cstr(.Fields("Name-ID").Value), vbOKOnly + vbInformation + vbApplicationModal
    .MoveNext
  Loop
  .Close
End With
Хотя зачем такое?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.08.2006, 13:58
#5
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Ежели в запросе то в квадратных скобках можно
Код:
[Выделить все]
......
oRecordset.Open "SELECT [Name-ID] FROM Test;", oAccess, adOpenKeyset
....
а можно и переименовать
Код:
[Выделить все]
......
oRecordset.Open "SELECT [Name-ID] AS NameId FROM Test;", oAccess, adOpenKeyset
....
тогда "проблема" чтения из рекордсета отсутствует как таковая
Кстати, ключевые слова в запросе удобней писать ЗАГЛАВНЫМИ буквами - читать легче


А ежели из рекордсета выцеплять - то можно в кавычках (в принципе, можно и без Field)
Код:
[Выделить все]
....
MsgBox oRecordset("Name-ID")
.....
а можно просто по номеру (индексу) поля
Код:
[Выделить все]
....
MsgBox oRecordset(0) ' или какое оно там по счету..... 
.....
vk вне форума  
 
Автор темы   Непрочитано 03.08.2006, 07:30
#6
Димас

джедай
 
Регистрация: 31.01.2005
Магадан
Сообщений: 460
<phrase 1=


спасибо) с алгоритмом понятно))
возник такой вопрос, а если я вдруг захочу, чтоб была переменая с таким названием "Name-ID" или вдруг еще какая нужда возникнет чтоб слово с "-" было)) как-то можно редактор побороть, чтоб он пробелы не добавлял?
или такого в принципе не должно быть?)
Димас вне форума  
 
Непрочитано 03.08.2006, 08:16
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408


VB не лисп, посмотри на правила формирования имен переменных. К примеру, здесь:
http://office.microsoft.com/ru-ru/as...spx?mode=print
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.08.2006, 08:38
#8
Димас

джедай
 
Регистрация: 31.01.2005
Магадан
Сообщений: 460
<phrase 1=


понятно) спаисбо
Димас вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > название поля в Access или как убрать пробел((