Удалить определённое количество полей (столбцов)

pensioner16
Дата: 09.09.2005 13:37:28
Поиск и FAQ смотрел
Access 2003, таблица, поля.
Как удалить определённое количство столбцов?
к примеру, у меня после импорта из Excel, появились лишние (пустые) поля.
А также пустые строки.
1) Может есть вариант при котором при импорте пустые столбцы и строки
(в Excel, ячейка содержащая только один пробел и больше никаких символов, это уже значение, хотя она выглядит пустой)
не будут переносится.?
2) Что-то я нигде не нашёл, как удалить определённое количество столбцов. Пусть это будет вариант не при импорте. Допустим поля с 8 по 12. Естественно не вручную.
Пожалуйста, если можно полный вариант кода. Я догадываюсь
что там будет слово Delete, но мне это не поможет, я только учусь.
И самое главное куда эго поместить. Как писать код для кнопок на форме, я разобрался, а если у меня нет формы а только таблица, тогда куда писать код и как его потом вызывать.
adv
Дата: 09.09.2005 15:19:44
С delete не угадали.

doCmd.RunSQL("alter table ваша_таблица drop поле8, поле9,...;")

Если названия полей неизвестно, можно попробовать:
dim rst as dao.recordset
dim sqlStr as string
dim fldStart as integer
dim fldEnd as integer
fldStart = 8
fldEnd =12
set rst = currentDB.openRecordset("select * from ваша_таблица where 1=2") 
sqlStr = "alter table ваша_таблица drop " 
for i = fldStart to fldEnd 
sqlStr =  sqlStr & rst.Fields(i).Name & iif(i=fldEnd , ";", ", ")
next i
doCmd.RunSQL(sqlStr)
Но * лучше не использовать. где то слышал, что не гарантируется последовательность полей, как в таблице, хотя у меня всегда последовательность совпадает с табличной.

А формочку делать придётся.
Toking
Дата: 09.09.2005 15:32:49
автор
А формочку делать придётся.


Зачем?

Код можно оформить как процедуру в модуле, предварительно его создав, и запустить ...
adv
Дата: 09.09.2005 16:13:40
Toking
Зачем?

Код можно оформить как процедуру в модуле, предварительно его создав, и запустить ...

И вправду. Не подумал. :)
pensioner16
Дата: 09.09.2005 16:14:38
Спасибо ребята за подсказки.
Создать процедуру в Модуле... Это мне знакомо.

В Excel я мог вызвать любую процедуру следующими методами

1) Создав кнопку прямо на Листе. Без создания формы.
( А в Access ...?)
2) Сочетание клавишь.( Это поддерживается?)

3) Вызов процедуры можно осуществить по многим параметрам
которые зависят от Листа.
а) Activate
b) BeforeDoubleClick
c) - / - Right - /-
d) Calculate
e) Change
f) Daectivate и т.д.

полный список можно увидеть следующим образом. Просто открываете
Excel жмёте Alt + F11, в открывшемся окне слева жмёте VBAProject
кликаете на любой Лист, в появившемся окне сверху из выподающего
списка слева General выбираете > Worksheet а справа из выподающего
списка любое событие.
например при выборе PivotTableUpdate
создастся следующий код -

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
' Call ***
End Sub
Вместо звёздочек название макроса, оно следует после слова Sub в модуле.

В Access такое невозможно ?

Я так подробно написал про Excel не потому что я самый умный, нет,
как раз наоборот, просто очень хочется под старость, Access-у
научиться. Обьясните, если есть у Access-а, что-то подобное так же
просто и доходчиво, пожалуйста. А то я только к 3 часам ночи разобрался как правильно устанавливать связи, хотя справочник на русском...

Если кому что надо в Excel создать, пишите - pensioner@go.ru
не просто подскажу, а даже сделаю.
adv
Дата: 09.09.2005 16:33:57
Вкладка Модули - создать новый.
В нём определить:
Public Function x()

....

End Function
запустить можно из этого же модуля - F5
или из другого места: call x()
pensioner16
Дата: 09.09.2005 18:58:11
Дорогой Ady, не получается.
скачайте "живой" файл с моего ресурса -
http://www.ipat.nm.ru/
Как видите там первая ошибка совсем детская (переменная),
это мелочь. Но я её специально не исправлял, ведь автор кода Вы,
поэтому Вам виднее. Но то что происходит дальше мне не понятно.
Что я делаю не правильно.?