Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Access VBA

Автор: kolob204
Дата сообщения: 05.06.2006 19:28
Доброго времени суток.
Как обычно нет времени на разборы, поэтому если не трудно помогите с вопросом.

Создал две таблицы:
1)Название_статьи (в которой есть ключевое поле - КОД(счётчик) и поле Название(текст))
2)Статья (в которой есть поля - "Текст_статьи"(текст) "Автор" и КОД(числовой))

Связал КОД'ы связью 1:1

Создаю на форме объект "Поле со списком" и из первой таблицы заганяю туда "Названия статей" (В свойствах ->Источник строк:
SELECT Название_статьи.[Название статьи] FROM Название_статьи ORDER BY Название_статьи.[Название статьи]; )

и создаю объект "Microsoft Forms 2.0 Text Box"
Хочется чтобы при выборе в поле списка названий - загружался текст статьи из второй таблицы в TextBox - как это сделать...не получается (

Visual Basic не знаю, но в принципе разобраться смогу...если он тут нужен..
Автор: dneprcomp
Дата сообщения: 05.06.2006 20:19
kolob204
Посмотри [more=Find a record by selecting a value from a list]
Find a record by selecting a value from a list
On a form, you can create a list box (list box: A control that provides a list of choices. A list box consists of a list and an optional label.) or a combo box (combo box: A control used on a form that provides the combined functionality of a list box and a text box. You can type a value, or you can click the control to display a list and then select an item from that list.) that finds a record when you select a value from the list.

Open the form in Design view (Design view: A window that shows the design of these database objects: tables, queries, forms, reports, macros, and data access pages. In Design view, you can create new database objects and modify the design of existing ones.).
Click Control Wizards in the toolbox (toolbox: A set of tools that is available in Design view to add controls to a form, report, or data access page. The toolset available in page Design view is different from the toolset available in form and report Design view.) if it's not already pressed in.
In the toolbox, click List Box or click Combo Box .
On the form, click where you want to place the list box or combo box.
In the first wizard dialog box, click the option to find a record based on the value you selected in the list box or combo box.
Follow the directions in the wizard dialog boxes. In the last dialog box, click Finish to display the list box or combo box in Design view.
If you want to see the event procedure (event procedure: A procedure that is automatically executed in response to an event initiated by the user or program code, or that is triggered by the system.) that makes the list box or combo box work, open the box's property sheet, and then click the Build button next to the AfterUpdate property box.[/more]
Автор: kolob204
Дата сообщения: 05.06.2006 20:28
Насколько смог перевести - там то что я уже смог сделать - т.е. воткнуть на форму ComboX - и указать из какой таблицы заполнять строки...а вот как связать то что выбираешь с полем MEMO ... или из меня плохой переводчик...
Автор: dneprcomp
Дата сообщения: 05.06.2006 21:18
kolob204
Собственно, тебе должна подойти последняя фраза
If you want to see the event procedure that makes the list box or combo box work, open the box's property sheet, and then click the Build button next to the AfterUpdate property box.
Открой проперти, найди AfterUpdate и кликни на визард(...) Т.е. создашь правило что делать после изменения значения комбобокса.
Автор: kolob204
Дата сообщения: 06.06.2006 13:50
dneprcomp
эммм...
В том то и проблема - что я не знаю как эту обработку написать.
VB я не знаю...на выражениях не получается...просто я не имел дела до этого с аксессом.
Автор: Ge0rge
Дата сообщения: 06.06.2006 15:18
Гуру, подскажите пожалуйста, как на VBA сделать аналог команды copy.exe file1+file2 file3? Желательно при этом ещё повесить на процесс копирования прогресс бар или часы на курсор.
Автор: dneprcomp
Дата сообщения: 07.06.2006 00:50
kolob204
Ну, хорошо. Попробуем.

1.Создай Query1
SELECT Статья.Текст_статьи, Статья.КОД
FROM Статья
WHERE (((Статья.КОД)=[Forms]![Form2]![Combo2]));

2.Record Source для формы ставим Query1
3.Row Source для combo ставим
SELECT Название_статьи.Название, Название_статьи.Код FROM Название_статьи;
4.Column Count для combo 2
5.Bound Colum 0
(если неправильно сработает поставь 1. Запутался я в твоих длинных названиях )
6.Control Source для textbox Текст_статьи
7.В код помести
Private Sub Combo2_AfterUpdate()
Me.Requery
End Sub


Вроде ничего не забыл и не перепутал
Автор: parserNew
Дата сообщения: 07.06.2006 09:13
' включить курсор с часиками
DoCmd.Hourglass True
' аналог соманды сору
Shell "command.com /c copy d:\1.log + d:\1.txt d:\2.txt", vbHide
' выключить курсор с часиками
DoCmd.Hourglass False
Автор: Ge0rge
Дата сообщения: 07.06.2006 09:16
parserNew, спасибо, но я думал что есть решение чтобы совсем отказаться от привязки к внешней copy...
Автор: parserNew
Дата сообщения: 07.06.2006 10:45
Sub Test()
CopyAnalog "d:\2.txt", "d:\1.log", "d:\1.txt"
End Sub

Sub CopyAnalog(strFileNameDST As String, ParamArray strFileNameSRC() As Variant)
Dim intFileNumSRC As Integer, intFileNumDST As Integer, intFileNum As Integer
Dim strFile As String

' открыть файл-приёмник для добавления
intFileNumDST = FreeFile
Open strFileNameDST For Append As intFileNumDST

intFileNumSRC = FreeFile

For intFileNum = 0 To UBound(strFileNameSRC)
' прочитать файл-источник в переменную
Open strFileNameSRC(intFileNum) For Input As intFileNumSRC
strFile = Input(LOF(intFileNumSRC), #intFileNumSRC)
Close intFileNumSRC
' добавить в файл-приёмник
Print #intFileNumDST, strFile;
Next intFileNum

Close intFileNumDST
End Sub
Автор: kolob204
Дата сообщения: 07.06.2006 17:03
<b>dneprcomp</b>

Спасибо большое за помощь!
А можно сделать что то типо этого (правда это не работает у меня ):

В данные TextBox заносить Статья.Текст_Статьи в соответсвии и индексом выбранном в Combo2 без запросов.

Ну т.е. к примеру как если бы я в делфи создал файл записей
Record = newsletter
Name = string[50];
CTATbya = string;
end;

И в ComboBox при выборе названия делал SEEK(..); в соответсвии со свойством ComboBox.itemindex;

Можно такое организовать?
Автор: Ge0rge
Дата сообщения: 07.06.2006 17:07
круто, parserNew, ещё последний вопрос: как проще в упомянутую
Shell "command.com /c copy d:\1.log + d:\1.txt d:\2.txt", vbHide
вставить свою переменную вместо имени файла?
Автор: parserNew
Дата сообщения: 07.06.2006 17:21
Dim strFileNameDST As String, strFileNameSRC1 As String, strFileNameSRC2 As String

strFileNameDST = "d:\2.txt"

strFileNameSRC1 = "d:\1.log"
strFileNameSRC2 = "d:\1.txt"

Shell "command.com /c copy " & strFileNameSRC1 & " + " & strFileNameSRC2 & " " & strFileNameDST, vbHide
Автор: dneprcomp
Дата сообщения: 07.06.2006 18:12
kolob204

Цитата:
В данные TextBox заносить Статья.Текст_Статьи в соответсвии и индексом выбранном в Combo2 без запросов.
Чем это отличается от того что происходит сейчас? Что должен объяснить пример я совершенно не понял.
Цитата:
И в ComboBox при выборе названия делал SEEK(..); в соответсвии со свойством ComboBox.itemindex;
Разве значения ComboBox.itemindex совпадают со значениями поля КОД и корреспондируются с другими полями?
Автор: kolob204
Дата сообщения: 07.06.2006 21:08
dneprcomp

Я извиняюсь. Ошибся при создании запроса не добавил в связь вторую таблицу.
Всё работает!
Большое спасибо!
Автор: Ge0rge
Дата сообщения: 08.06.2006 16:47
parserNew, как бы ещё сделать чтобы DoCmd.Hourglass False работал только после завершения процесса copy, а то получается что копирование идёт скрытым процессом...
Автор: zZum
Дата сообщения: 09.06.2006 18:29
ЗДРАВСТВУЙТЕ, я полный профан в аксессе помогите активировать окно
_http://c.foto.radikal.ru/0606/3cc5da4ef947.jpg
Автор: dneprcomp
Дата сообщения: 10.06.2006 01:34
zZum
Или прав не хватает, или некуда конвертировать. Нельзя ли дать больше информации:
1.какой версией Access сделана база
2.какой версией Access открыта
3.зачем и во что конвертировать
Автор: RffR255
Дата сообщения: 10.06.2006 13:16
Проблема такая. создаем базу с паролем. Но пароль тутже легко вскрыватся спеу программами, несмотря на его сложность. Что нет выхода? (Офис XP)
Автор: zzzzz
Дата сообщения: 14.06.2006 00:29
ЗДРАВСТВУЙТЕ, есть такая проблемка.
Нужно создать бат файлик, который будет запускать мою базу и нужный макрос
вроде просто но.....
c:\BasKlien\swirinDE.mdb /Makro3
Автор: Kat iynok
Дата сообщения: 21.06.2006 14:54
RffR255
можно попробывать сделать БД доступной только при наличии какого либо файла(просто ещё одна защита). Я такое использовала в своей программе, получается ты создаёшь этот файл, размещаешь его где-нибудь, и прописываешь вот этот код:


DoCmd.SelectObject acForm, "&#202;&#237;&#238;&#239;&#238;&#247;&#237;&#224;&#255; &#244;&#238;&#240;&#236;&#224;", True
DoCmd.Minimize
Dim strFile As String

strFile = Dir("C:\Program Files\Microsoft Office\config.kr")
If strFile <> "config.kr" Then
DoCmd.Quit
End If

Если твою БД скопировали то она всё равно у них на локальной машине не откроется без этого файла.
Автор: kolob204
Дата сообщения: 28.06.2006 17:12
Здраствуйте у меня такой вопрос.

Есть некая иерархия таблиц, т.е. допустим на форме есть 4 ПоляСоСписком:
Первое поле жёстко определено таблицей1 (ТАБЛ1) (Код, название_поля)
А содержание последующи ПолеСоСписком2,3,4 должны зависеть от выбора предыдущих.

Т.е.: ТАбл1-Табл1.1-Табл2.1-Табл3.1.1
Табл3.1.2
Табл3.1.3
-Табл2.2-Табл3.2.1
Табл3.2.2
Табл3.2.3

-Табл2.3-Табл3.3.1
Табл3.3.2
Табл3.3.3

И так далле, т.е при Выборе Поля в одном списке в ПолеСоСписком соотвественно загружается информация из связанной таблицы.

Не получается
То почемуто форма пустой появляется (возможно ошибки в запросах делаю в область данных, не знаю) То просто не загружаются данные в следующую строку.
Может кто делал подобное, и есть примеры.

Вообщем не знаю я Access

PS: Буду очень признателен за любую помощь.
Помогите составить запросы, и как лучше организовать связи этих таблиц?

UPDATE
Может я неправильно сужу об такой организации. Я переделываю то что спрашивал на предыдущей странице - т.е. нужно чтобы Статья выбиралась не просто по названию, а сначала происходил выбор Тематики.
Пример:
Компьютеры
Железо
Процессоры -> Статья
Мат Платы -> Статья
ПО
Acrobat -> Статья
и тп...
Программирование
Делфи
Assemler
и тп...
Автор: griin
Дата сообщения: 05.07.2006 09:27
Есть таблица примерно такой структуры:
"ид" "ид_группы" "имя"
Автор: Nightcrawler
Дата сообщения: 05.07.2006 09:31
SELECT DISTINCT ид_группы FROM Таблица
Автор: griin
Дата сообщения: 05.07.2006 09:45
Nightcrawler, спасибо, сработало, но такая функциональность немного не устраивает, так как для работы выбрать нужно все поля из таблицы, а таким запросом выбирается только "ид_группы". Можно построить запрос таким образом, чтобы выбирались все поля из строк с уникальным "ид_группы"?

Добавлено:
Вопрос уже не очень актуален, т.к. обошелся двумя запросами... Хотя по прежнему интересно, можно ли сделать такую выборку одним запросом...

Добавлено:
Теперь надо составить немного более сложный запрос. Есть две таблицы.

Группы:
"ид" "ид_группы" "имя"
Автор: Nightcrawler
Дата сообщения: 05.07.2006 11:34
Попробуй
SELECT * FROM Группы WHERE ид_группы IN (SELECT ид_группы FROM Команды WHERE ид_команды = "команда 1")"

Добавлено:

Цитата:
Хотя по прежнему интересно, можно ли сделать такую выборку одним запросом...


IMHO, это не возможно т.к. язык SQL предполагает однозначность запроса при выборке, тут же ее нет... в одном случае можно вернуть 1 и3 строки, в другом - 2 и 4. Обе будут удовлетворять одному запросу, что не есть правильно...
Автор: Yuk
Дата сообщения: 05.07.2006 18:15
griin
Используй INNER JOIN, примерно так:

Код: SELECT * FROM Группы INNER JOIN Команды ON Команды.ид_группы=Группы.ид_группы
WHERE Команды.ид_команды = "команда 1"
Автор: kolob204
Дата сообщения: 05.07.2006 22:18
Видимо мой вопрос не правильно сформулирован или ответа на него нет?
Автор: Yuk
Дата сообщения: 05.07.2006 23:25
kolob204
Ну что ж, поскольку у тебя таблицы не описаны возьмем пример от griin.
Добавим на форму 2 выпадающих списка combo1 и combo2.
1-й будет выдавать команды, 2-й - группы.
В RowSource 1-го вставим:
Код: SELECT DISTINCT Команды.ид_команды FROM Команды;
Автор: dneprcomp
Дата сообщения: 07.07.2006 09:27
Ищу информацию, способы и программы(можно и платные) для декомпиляции mde файлов. База 97-я.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

Предыдущая тема: BDE - траблы, помогите пожалуйста срочно...


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.