Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / проблема при программной работе с Ms Access / 21 сообщений из 21, страница 1 из 1
25.02.2004, 19:05
    #32421568
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Необходимо решить следующую задачу.

Дано: база данных Ms Access, таблицы.
Необходимо: программно открывать базу и таблицы и автоматически заполнять таблицы данными.
Проблема: у меня получилось сделать это через программное нажатие клавиш (эмуляция работы клавиатуры: keybd_event). Скорость слишком мала для работы с большим объемом данных!!! При выполнении программы нельзя работать с другими приложениями, т.к. если сбивается фокус, то сбивается работа программы!!!

Вопросы:
№ 1. Как ускорить процесс???
№ 2. Как запускать программу так, чтобы другие приложения были доступны без ущерба для работы программы (фоновый режим или как-нибудь через сообщения между программой и системой)???
№ 3. Может, следует поменять принцип работы программы???

Заранее благодарен!!!
...
Рейтинг: 0 / 0
25.02.2004, 19:26
    #32421602
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Откуда берутся данные? Из другой базы? Файла?
Для заполнения прекрасно подходит ADO.

Magnus
...
Рейтинг: 0 / 0
26.02.2004, 00:50
    #32421751
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Автор спросил и забыл посмотреть ответы.
...
Рейтинг: 0 / 0
26.02.2004, 12:46
    #32422282
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Данные берутся из самой программы (VB) в определенном порядке или генерируются (числовые или текстовые, я думаю, не столь важно).
При открытии базы данных открываются несколько форм, написанные на VBA.
Необходимо автоматически вводить данные в эти формы.
Работа с базой осуществляется несколькими пользователями.

Что такое ADO, я не знаю.
...
Рейтинг: 0 / 0
26.02.2004, 13:07
    #32422323
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
>Данные берутся из самой программы (VB) в определенном порядке или генерируются (числовые или текстовые, я думаю, не столь важно).
При открытии базы данных открываются несколько форм, написанные на VBA.

Так подожди. Есть проект на VB6 , где сделаны формы для ввода данных ? Так?
Ты пишешь еще про VBA, но этот диалект используется в Access. Так где логтка программы написана ? В VB6 или в Access / VBA ?

Сами данные хранятся в таблицах Access надо думать.

Я так понял программу не ты делал. Раз не в курсе что такое ADO.

Мало информации про это , давай еще.
...
Рейтинг: 0 / 0
26.02.2004, 13:17
    #32422352
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
>Так подожди. Есть проект на VB6 , где сделаны формы для ввода данных ? Так? Ты пишешь еще про VBA, но этот диалект используется в Access. Так где логтка программы написана ? В VB6 или в Access / VBA ?

Сама программа написана на VB6, но в базе есть свои формы, написанные на VBA, для авторизации и т.д., которые заполняются при открытии базы.

>Сами данные хранятся в таблицах Access надо думать.

Так и есть, но заполнение идет через программу, написанную на VB6.

>Я так понял программу не ты делал. Раз не в курсе что такое ADO.

Программу писал сам, но я обычно программирую для себя, а тут на работе напрягли.

>Мало информации про это , давай еще

Какая еще информация необходима для более полного ответа?
Если что, пишите на мыло: andrey@unif.brl.ru, т.к. я на работе - нет возможности постоянно сидеть в интернете, хотя по возможности пытаюсь следить за ответами.
...
Рейтинг: 0 / 0
26.02.2004, 14:02
    #32422479
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Хорошо , а на каком движке сделал обработку данных в VB6? Если не ADO значит DAO. Не ODBC же?

>Так и есть, но заполнение идет через программу, написанную на VB6.

Все равно неясно ,зачем формы и на VB6 и на Access ? И VB6 и Access могут использовать для доступа к данным одни и те же библиотеки , например DAO.

Нужно было делать интерфейс юзера либо на том либо на другом.

Перепиши программу полностью на VB6 , а Access используй для хранения данных. И не делай такого винегрета. Может из за него весь сыр-бор.
...
Рейтинг: 0 / 0
26.02.2004, 14:30
    #32422569
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Порядок загрузки базы определен: 2 поочередно всплывающие формы, в которые вводится определенная информация (пользователи и пароли, отделы и т.д.). База уже создана. Данные частично забиты.
Таблицы и т.д. можно переделать для работы из-под VB.
На данный момент необходимо вводить данные хотя бы в эти 2 формы (как-нибудь в фоновом режиме).

Вод примерный код программы (точный код открыть не могу: политика фирмы запрещает, но в общем принцип одинаков).

Private Declare Sub keybd_event Lib "USER32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal

dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private i As Long
Private j As Long
Private Mas(9) As Long
Private St As String

Private Sub Run_Click()
For i = 0 To 9
Mas(i) = 96 + i
Next i
For i = 1 To 100
Shell "C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE C:\db1.mdb"
For j = 1 To 100
keybd_event 96, 0, 0, 0 '96 - 105
keybd_event 96, 0, KEYEVENTF_KEYUP, 0 '96 - 105
Next j
keybd_event 13, 0, 0, 0
keybd_event 13, 0, KEYEVENTF_KEYUP, 0
St = Str(i)
For j = 2 To len(St)
keybd_event Mas(Val(Mid(St, j, 1))), 0, 0, 0 '96 - 105
keybd_event Mas(Val(Mid(St, j, 1))), 0, KEYEVENTF_KEYUP, 0 '96 - 105
Next j
keybd_event 13, 0, 0, 0
keybd_event 13, 0, KEYEVENTF_KEYUP, 0
Next i
End Sub

Если можно как-нибудь программно работать с этими 2 формами при загрузке формы, подскажите!!!
...
Рейтинг: 0 / 0
26.02.2004, 14:46
    #32422621
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
2 Андрей Il
Ты извини, но нет никакого желания заниматься извращениями.
Данные вводимые в формах сразу кидать в базу? А?
За чем ехать через Жмеринку?

Посмотри какие поля в каких таблицах заполняются данными и кидай сразу из vb используя ADO. Что оно такое почитай в MSDN. Вопрос слишком обьемный.
Добавляешь ссылку наннего в проэкте, открываешь рекордсет

Dim rs as ADODB.Recordset

Set rs = New ADODB.Recordset

rs.Cursorlocation=aduseClient
rs.open "select field1, field2 from mytable", "connection string",adOpenStatic, adLockBatchOptimistic

rs.AddNew

with rs
!Field1=Value1
!Field2=Value2
!Field3=Value3
!Field4=Value4
end with
rs.Update
rs.Close
set rs=nothing

Это если коротко.
Удачи.

Magnus
...
Рейтинг: 0 / 0
26.02.2004, 15:02
    #32422670
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Я прекрасно понимаю, о каких "извращениях" идет речь, полностью согласен.
Приношу свои извинения!!!

Опустим ввод данных в таблицы и т.д. Бог с ними.
Пусть речь идет только о программном обращении к первым 2 формам и вводе данных в них.
Не хочу показаться назойливым, но мне ОЧЕНЬ необходимо решить поставленную задачу.
Если удасться программно обратиться к этим формам и ввести в них данные (в фоновом режиме), то это можно будет использовать и при работе с другими приложениями.
Если нужна примерная база с этими 2 формами, я могу выслать на мыло.
Для меня это очень важно!!!
...
Рейтинг: 0 / 0
26.02.2004, 15:18
    #32422709
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Цель этого всего какая? Занести данные в базу! Так зачем это делать через формы ацеса? ПОчему не напрямую, как я показал?

Если хочешь поизвращаться то можно попробовать получить доступ к формам как к обьектам, типа:

objAccess= GetObject("Access.Application")
objAccess.Form1.TextField1.Text="Bla bla bla"

Magnus
...
Рейтинг: 0 / 0
26.02.2004, 15:41
    #32422752
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Сие произведение изначально спроектировано неверно. Использовать формы Access действительно просто не к чему , как верно заметил Magnus 23. И теперь у тебя проблемы.
С самого начала надо было брать DAO или ADO и паять программу "общения" с базой Access на VB6. Вся логика была бы в VB, Access-вская база была бы хранилищем. А можно было просто взять Access и сделать все на нем.

Если ваша контора разрабатывает на VB6 и будет это делать в будущем, то бегом марш изучать ADO. Это действительно тебе пригодиться! И ты не будешь ремонтировать "двигатель через выхлопную" трубу.
...
Рейтинг: 0 / 0
26.02.2004, 15:44
    #32422757
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
И ты не будешь ремонтировать "двигатель через выхлопную" трубу.
Наиболее точное описание процесса :)

Magnus
...
Рейтинг: 0 / 0
26.02.2004, 15:52
    #32422770
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
матьматьмать..

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Function Delirium()
    Dim app As Access.Application
    Set app = New Access.Application
    app.OpenCurrentDatabase  "C:\db1.mdb" , False
    app.DoCmd.OpenForm  "Форма1" , acNormal
    
    Dim frm As Form
    Set frm = app.Forms( "Форма1" )
    frm.SetFocus
    Do Until False
        app.DoCmd.GoToRecord acActiveDataObject, , acNewRec
        frm![Поле0] =  "aaaa" 
        frm![Поле1] =  "bbb" 
        frm.Dirty = False
    Loop
    app.Quit
End Function
...
Рейтинг: 0 / 0
26.02.2004, 16:01
    #32422799
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Подвалила бронетехника из Accessa :)

ЗАЧЕМ ЭТО ВСЕ? :)

Magnus
...
Рейтинг: 0 / 0
26.02.2004, 16:07
    #32422820
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Начальство напрягло!!!

Конкретнее пока не могу объяснить!!!

Мне ОЧЕНЬ НУЖНО!!! Горю!!!
...
Рейтинг: 0 / 0
26.02.2004, 16:16
    #32422841
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Точно мать.

Дали ж тебе пример! :)

Magnus
...
Рейтинг: 0 / 0
26.02.2004, 16:20
    #32422859
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Начальство послать подальше и начать ремонт двигателя
И запчасти тебе уже дали.
...
Рейтинг: 0 / 0
26.02.2004, 16:34
    #32422905
Андрей Il
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Спасибо за помощь и советы!!!

Если кто-нибудь сможет решить мою проблему посредством КОНКРЕТНОГО ПРИМЕРА, пишите на мыло (andrey@unif.brl.ru), и я вышлю примерную базу, с которой необходимо работать.

Заранее благодарен!!!
Надеюсь на Вашу помощь!!!
...
Рейтинг: 0 / 0
26.02.2004, 17:05
    #32423032
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Шли на мое профильное мыло. Гляну. Опиши что нужно хоть примерно.
...
Рейтинг: 0 / 0
26.02.2004, 17:05
    #32423033
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема при программной работе с Ms Access
Шли на мое профильное мыло. Гляну. Опиши что нужно хоть примерно.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / проблема при программной работе с Ms Access / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]