Показать полную графическую версию : [решено] Access. Выбор данных
ab.random
30-08-2011, 21:14
Помогите, пожалуйста, выбрать данные из БД *.mdb. База очень большая, и изменять значения вручную просто бессмысленно.
Задача такая. В БД имеется большое количество таблиц, сделанных по одному шаблону. В частности, в каждой таблице имеется колонка с названием "ОУ". Требуется из всех таблиц вывести строки, у которых в столбце ОУ содержится число 21 (с любыми комбинациями остальных слов). В одной таблице может быть несколько строк, удовлетворяющих этому требованию. Затем, во всех выбранных строках надо увеличить значение столбца "стаж" на единицу. Так же желательно, чтобы в найденной строке отображалось название таблицы, из которой она взята.
Заранее спасибо.
ab.random, примерно так:
Option Compare Database
Option Explicit
Sub ExecFromAllTables()
Dim objTableDef As TableDef
With CurrentDb
For Each objTableDef In .TableDefs()
If objTableDef.Properties.Item("Attributes") And dbSystemObject = dbSystemObject Then
Else
If FieldExist(objTableDef, "ОУ") And FieldExist(objTableDef, "стаж") Then
.Execute _
"UPDATE [" & objTableDef.Name & "] " & _
"SET [стаж] = [стаж] + 1 " & _
"WHERE [ОУ] LIKE '*21*'"
Debug.Print objTableDef.Name, vbTab, "обновлено: " & .RecordsAffected & " записей"
End If
End If
Next
End With
End Sub
Function FieldExist(objTableDef As TableDef, strFieldName As String)
Dim objField As Field
FieldExist = False
For Each objField In objTableDef.Fields
If objField.Name = strFieldName Then
FieldExist = True
Exit For
End If
Next
End Function
ab.random
31-08-2011, 10:21
Спасибо, конечно, но где это прописывать?
Я Access открыл второй или третий раз в жизни :lamer: и рассчитывал на подсказку, как это сделать с помощью конструкторов и мастеров из стандартной панели инструментов, если это возможно
ab.random, у меня нет Microsoft Access 2010. В 2003-ем это может выглядеть так:
* открыть базу данных;
* перейти на вкладку «Модули»;
* нажать кнопку «Создать»;
* выделить (если есть) текст нового модуля и заменить его на код из #2 (http://forum.oszone.net/post-1742979-2.html);
* сменить, по потребности, имя модуля нужное и сохранить.
Вывод через «Debug.Print» заменить потребным выводом. Вызов процедуры также назначить, через что нужно.
ab.random
31-08-2011, 23:41
Всё, разобрался :yahoo: Всем откликнувшимся огромное спасибо!)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC