Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > создание новой таблицы через SQL


Автор: киса2009 24.4.2010, 22:54
И еще раз здравствуйте!Появилась проблемка,связанная с vba в access.
Имеется следующее

создаю динамическую таблицу с новым именем,вот так:

Dim New_Name As String
Dim MyK As ADODB.Command
Set MyK = New ADODB.Command
MyK.ActiveConnection = CurrentProject.Connection
MyS = Trim$(DLookup("ОКУД", "t1", "[Use]=True")) <-здесь смотрю какой ОКУД активен (но это не важно)
New_Name = Original_Name & "_" & Наименование
MyK.CommandText = "SELECT * Into " & New_Name & " FROM " & Original_Name & " WHERE " & True
MyK.Execute

Хочу на выходе получить вот такое имя таблицы(к примеру)-t3_11111_14.12.2001, где 11111 - номер активного ОКУДа, а 14.12.2001 - дата его редакции.
И вот проблема - аксесс не может создать такую таблицу,так как он ругается на точки между цифрами,если дату задать так 14дек2001,то все шикарно создается таблица t3_11111_14дек2001, но это не "кашерно", так как форматом такое не запихнуть в название. И покажу как все происходит,как я не билась,все равно ВСЕ знаки препинания превращаются в точки!!!
Вижу два решения:
1)Как-то заставить его убирать точки и склеивать дату
2)писать так - 14дек2001,но не знаю как прописать под это дело формат

Внизу приложила небольшие картинки - как оно все происходит. Буду рада любой помощи.Спасибо большое! 

Автор: Данкинг 24.4.2010, 23:29
Цитата(киса2009 @  24.4.2010,  23:54 Найти цитируемый пост)
1)Как-то заставить его убирать точки и склеивать дату

Ну так напиши функцию, которая меняет точки на, к примеру, подчёркивания:
Код

Public Function strreplace(sss)
res = ""
 For j = 1 To Len(Trim(sss))
  If Mid(sss, j, 1) = "." Then res = res + "_" Else res = res + Mid(sss, j, 1)
 Next
strreplace = res
End Function

(если в VBA такой функции нет, в чём я сильно сомневаюсь).

Автор: киса2009 24.4.2010, 23:45
Кстати, что-то даже и не подумала по поводу функции,спасибо)сейчас попробую

Автор: киса2009 25.4.2010, 00:05
а sss j 1 это мои dd/mm/yyyy?
и куда лучше функцию прилепить?

Автор: киса2009 25.4.2010, 15:52
в каком моменте применить эту функцию?

Автор: киса2009 25.4.2010, 16:49
Проблема решена

Автор: Данкинг 25.4.2010, 18:51
Цитата(киса2009 @  25.4.2010,  01:05 Найти цитируемый пост)
а sss j 1 это мои dd/mm/yyyy?

Да, это параметр функции.

Автор: Akina 25.4.2010, 20:10
Цитата(киса2009 @  24.4.2010,  23:54 Найти цитируемый пост)
проблема - аксесс не может создать такую таблицу,так как он ругается на точки между цифрами,

А то, что длинные имена следует брать в кавычки, и при наличии точки в имени явно указывать расширение, нам неведомо... для этого же справку прочитать надо...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)