Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Значение по умолчанию для поля
 
 автор: Мария   (10.01.2008 в 13:34)   личное сообщение
 
 

Еще одна просьба о помощи: Как можно программно изменить значение по умолчанию для существующего поля в таблице? Свойство поля DefaultValue у меня устанавливается только для вновь создаваемого поля или для существующего, для которого еще не было задано значение по умолчанию.

  Ответить  
 
 автор: lexuss   (10.01.2008 в 14:03)   личное сообщение
 
 


Set dbsNorthwind = OpenDatabase("Northwind.mdb")
 Set tdfEmployees = dbsNorthwind.TableDefs!Employees

intDefValue = 1
'установка значения свойства DefaultValue 
tdfEmployees.Fields!PostalCode.DefaultValue = intDefValue 

  Ответить  
 
 автор: Мария   (10.01.2008 в 14:09)   личное сообщение
 
 

Я так и пытаюсь сделать, но, если ранее уже было задано другое значение по умолчанию, ничего не получается. В чем тут дело? Помогите, очень-очень-очень нужно...

  Ответить  
 
 автор: lexuss   (10.01.2008 в 14:17)   личное сообщение
 
 

Какое нибудь сообщение пишет?

  Ответить  
 
 автор: Мария   (10.01.2008 в 14:19)   личное сообщение
 
 

Пишет следующее:
Run-Time Error '3320'
Ошибка синтаксиса (пропущен оператор) в выражении условия на значение уровня таблицы.

  Ответить  
 
 автор: lexuss   (10.01.2008 в 14:28)   личное сообщение
 
 

Хм, ругается то на ошибку синтаксиса... а не на то, что не может изменить значение defaultValue... Не понятно...

  Ответить  
 
 автор: Мария   (10.01.2008 в 14:37)   личное сообщение
 
 

Мой фрагмент:

Dim DataBase_Data As Database
Dim sBase As String
Dim MyTable As DAO.TableDef

sBase = ПутьКДанным
Set DataBase_Data = OpenDatabase(sBase)
Set MyTable = DataBase_Data.TableDefs("МояТаблица")
MyTable.Fields("МоеПоле").DefaultValue = НовоеЗначение

Ругается на последнюю строку. При наведении курсора на MyTable.Fields("МоеПоле").DefaultValue показывает установленное ранее значение. Не могу найти ошибку.

  Ответить  
 
 автор: Explorer   (10.01.2008 в 14:37)   личное сообщение
 
 


>Хм, ругается то на ошибку синтаксиса... а не на то, что не
>может изменить значение defaultValue... Не понятно...


а чего тут непонятного... просто не понятно пишется слитно - непонятно

вот он и ругается на ошибку синтаксиса - надо отключить русский спеллчекер в настройках

*******************

ЗЫ

не по теме я ругнулся - сам забыл что Jet не поддерживает SET/DROP DEFAULT в инструкциях ALTER [TABLE] ALTER [COLUMN]

передайте новое значение DefaultValue в переменной типа string или integer

  Ответить  
 
 автор: lexuss   (11.01.2008 в 08:52)   личное сообщение
 
 

Уважаемый Експлорер, может быть в таком случае мне поучить вас, что предложения начинаются с большой буквы а заканчиваются как минимум точкой? И что слова "спеллчекер" нет в русском языке, хотя мы все понимаем о чем идет речь?
К чему эти проявления наблюдательности, не относящиеся к теме?

  Ответить  
 
 автор: Explorer   (11.01.2008 в 09:46)   личное сообщение
 
 

сначала мне показалось странным такое длинное и сложное обращение к своиствам поля таблицы вот я и разворчался...

давайте не будем флеймить в топике - ИМХО тема себя исчерпала

  Ответить  
 
 автор: BorisL   (10.01.2008 в 14:29)   личное сообщение
 
 

Муторно, но должно работать (если очень нужно ;) )
Программно:
переименовать старый столбец
добавить новый с новым значением по умолчанию
перекатать туда данные из старого столбца
удалить старый столбец

  Ответить  
 
 автор: Мария   (10.01.2008 в 14:33)   личное сообщение
 
 

Я уже думаю об этом, но мне важна последовательность столбцов, она должна совпадать с последовательностью в другой таблице (не очень здорово, но переделать сложно), а как ее потом восстановить я не знаю.

  Ответить  
 
 автор: Анатолий (Киев)   (10.01.2008 в 17:28)   личное сообщение
 
 

А у меня все получается (А2000), только вместо OpenDatabase(sBase) использовал CurrentDB.

tdf.Fields("MyText").DefaultValue = "Proba"
tdf.Fields("MyNum").DefaultValue = 0

ALTER COLUMN тоже работает, но не с CurrentDB, а так:
CurrentProject.Connection.Execute "ALTER TABLE Proba ALTER COLUMN MyNum LONG DEFAULT 0"

  Ответить  
 
 автор: Explorer   (11.01.2008 в 02:27)   личное сообщение
 
 


>ALTER COLUMN тоже работает, но не с CurrentDB, а так:


а при чем тут CurrentDB?

  Ответить  
 
 автор: Анатолий (Киев)   (11.01.2008 в 10:18)   личное сообщение
 
 

Потому, что у девушки: Set DataBase_Data = OpenDatabase(sBase)
Вероятно это другая БД. Я поленился это проверять.

  Ответить  
 
 автор: Анатолий (Киев)   (11.01.2008 в 10:28)   личное сообщение
 
 

>ALTER COLUMN тоже работает, но не с CurrentDB, а так:
>а при чем тут CurrentDB?
Потому, что CurrentDB.Execute "ALTER TABLE Proba ALTER COLUMN MyNum LONG DEFAULT 0" - не работает. Ошибка синтаксиса.

Вообще ADODB.Connection побогаче насчет синтаксиса SQL. Например, с помощью CREATE TABLE можно создать DBF файл с желаемым количеством десятичных разрядов в числовых полях.

  Ответить  
 
 автор: Explorer   (11.01.2008 в 10:49)   личное сообщение
 
 

>Вообще ADODB.Connection побогаче насчет синтаксиса SQL.

у автора вопроса DAO судя по куску кода

  Ответить  
 
 автор: Анатолий (Киев)   (11.01.2008 в 13:30)   личное сообщение
 
 

Это был мой ответ на ваше утверждение:
>не по теме я ругнулся - сам забыл что Jet не поддерживает SET/DROP DEFAULT в >инструкциях ALTER [TABLE] ALTER [COLUMN]

  Ответить  
 
 автор: Мария   (10.01.2008 в 15:40)   личное сообщение
 
 

Большое спасибо всем, кто мне отвечал. Я нашла ошибку. Поле, которому я пыталась назначить значение по умолчанию, было текстовым, новое значение нужно было присваивать с добавлением кавычек с каждой стороны . Прошу прощения за то, что отняла у вас время.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList