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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Программное добавление поля в таблицу
 
 автор: час   (12.12.2007 в 20:29)   личное сообщение
 
 

Dim MyField As Field
Dim MyTable As TableDef
Dim MyDb As Database
'Подскажите кто знает - что не так?

Set MyDb = CurrentDb
Set MyTable = MyDb.TableDefs!kas2007
Set MyField = MyTable.CreateField("MyFieldName") '- ругается mismatch

  Ответить  
 
 автор: час   (12.12.2007 в 21:05)   личное сообщение
 
 

Делай вот так
Dim MyTable As TableDef
Dim MyDb As Database


Set MyDb = CurrentDb
Set MyTable = MyDb.TableDefs!kas2007
MyTable.Fields.Append MyTable.CreateField("DayName", dbText, 20)

  Ответить  
 
 автор: час   (12.12.2007 в 21:05)   личное сообщение
 
 

Спасибо попробую...

  Ответить  
 
 автор: Serge Gavrilov   (12.12.2007 в 21:11)   личное сообщение
 
 

Set MyField = MyTable.CreateField("MyFieldName") '- ругается mismatch

ругается, потому что вы не указали конкретно, какой именно Field вы задаете - DAO или ADODB. А так как, видимо, ссылка на ADODB стоит выше, то и MyField получился ADODB.
Вот и Type mismatch.

  Ответить  
 
 автор: час   (12.12.2007 в 21:19)   личное сообщение
 
 

Спасибо ясно.
вот так нормально

Function NewField(Db_Name, Table_Name, Pole_Name, Pole_Tip, Pole_Size)
Dim MyField As Field
Dim MyTable As TableDef
Dim MyDb As Database
Set MyDb = CurrentDb
Set MyTable = MyDb.TableDefs(Table_Name)
MyTable.Fields.Append MyTable.CreateField(Pole_Name, Pole_Tip, Pole_Size)
End Function



А как , если таблица в другой базе?

  Ответить  
 
 автор: час   (12.12.2007 в 21:27)   личное сообщение
 
 

Пока вот так в текущей.


Function NewField(Db_Name, Table_Name, Pole_Name, Pole_Tip, Pole_Size)
Dim MyField As Field
Dim MyTable As TableDef
Dim MyDb As Database
   
   On Error GoTo NewField_Error
Set MyDb = CurrentDb
Set MyTable = MyDb.TableDefs(Table_Name)
MyTable.Fields.Append MyTable.CreateField(Pole_Name, Pole_Tip, Pole_Size)

   On Error GoTo 0
   Exit Function

NewField_Error:
   'Call Zapis_ERR("Module_Tabl" & " -> " & "NewField", Err.Number, Err.Description)
End Function

  Ответить  
 
 автор: час   (12.12.2007 в 21:28)   личное сообщение
 
 


А как , если таблица в другой базе?

  Ответить  
 
 автор: Serge Gavrilov   (12.12.2007 в 22:01)   личное сообщение
 
 

А как , если таблица в другой базе?

вместо Set MyDb = CurrentDb используйте Set MyDb = OpenDatabase(...)
см. Help

  Ответить  
 
 автор: час   (13.12.2007 в 16:01)   личное сообщение
 
 

Чет я туплю.
Устал я вчера очень.
Вы совершенно правы.
Спасибо за оказаную помощь

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