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

» VBA for Access

Автор: Raisa
Дата сообщения: 21.04.2004 15:55
Как с помощью VBA создать новую запись в таблице?
Автор: Felix
Дата сообщения: 22.04.2004 08:07
Необходимо добавить:
'Tools -> References -> Microsoft DAO x.x Object Library


Dim rstCurr As DAO.Recordset
Dim dbsCurr As Database

Set dbsCurr = Access.CurrentDb
Set rstCurr = dbsCurr.OpenRecordset("Имя таблицы", dbOpenDynaset)

rstCurr.AddNew
rstCurr.Fields("Имя поля").Value = Time$
rstCurr.Update

Автор: Raisa
Дата сообщения: 22.04.2004 08:59
Спасибо, получилось. Только теперь новая проблема. Сделала свободное поле в форме. Ввожу туда данные, а модуль эти данные почему то невидит. Пишит значение = Null. Что делать?
Автор: Felix
Дата сообщения: 22.04.2004 12:07
Это решабельно так:

Me!Поле1.SetFocus
rstCurr.Fields("Имя поля").Value = Me!Поле1.Text
Автор: Raisa
Дата сообщения: 23.04.2004 08:15
Можно ли сделать так, чтобы при открытии одного окна, открывалось сразу 3 формы? Но мне нужно так, чтобы они были равноправными, т.е. , чтобы подчиненность не присутствовала.
Автор: Felix
Дата сообщения: 23.04.2004 08:57
Несколько не понимаю, что имеется ввиду под словом "окно" и про подчинённость.
Если нужно одновременное открытие какого-то количества форм, то можно сделать так:

Private Sub Form_Open(Cancel As Integer) ' Обработчик открытия одной из форм
DoCmd.OpenForm ("Форма2")
DoCmd.OpenForm ("Форма3")
End Sub
Автор: Raisa
Дата сообщения: 23.04.2004 09:24
Я слышала, что вроде можно создать кнопочную форму, при вызове которой можно открыть сразу несколько форм. Но я не знаю как это сделать . Можешь помочь? Еще, я бы хотела, чтобы введя значения в одну форму, эти данные передавались в другую без закрытия последней.
Автор: Felix
Дата сообщения: 23.04.2004 09:59

Цитата:
Я слышала, что вроде можно создать кнопочную форму, при вызове которой можно открыть сразу несколько форм.

А чем не подходит то, что я предложил выше?

А вобщем, нельзя ли конкретнее: что есть и что хотелось бы получить...


Цитата:
Еще, я бы хотела, чтобы введя значения в одну форму, эти данные передавались в другую без закрытия последней


А значения куда вводятся?!? в таблицу, в Едит или ещё куда-нибудь
Автор: Raisa
Дата сообщения: 23.04.2004 10:22
Мне надо через форму1 заполнить таблицу. В этой форме1 две записи берут значения из других двух форм(форма2, форма3). Я хочу, чтобы все эти три формы одновременно открывались и обновляя записи в одной форме(форме2 или форме3), эти данные передовались в форму1. Сейчас, чтобы добиться этого мне приходится закрывать форму1 и открывать ее заново. Такое возможно?
Автор: Felix
Дата сообщения: 23.04.2004 11:18
Значения полей таблицы принадлежат полям какой формы?
Автор: Raisa
Дата сообщения: 23.04.2004 11:36
Формы1

Добавлено
Еще, на счет

Цитата:
Me!Поле1.SetFocus
rstCurr.Fields("Имя поля").Value = Me!Поле1.Text

пишет: Invalid use of Me keyword
Автор: Felix
Дата сообщения: 27.04.2004 06:58
Если есть возможность, то отправь базу мне на почту (можно без данных), и я попытаюсь тебе помочь
Автор: Raisa
Дата сообщения: 28.04.2004 08:54
Я уже разобралась с формами. Ты мне очень помог, спасибо . Если не затруднит, скажи, как переменной в модуле передать значения, которые выходят в запросе? И еще, откуда ты это все знаешь?
Автор: Felix
Дата сообщения: 29.04.2004 06:45
Объяви глобальную переменную и её будет видно во всех модулях проекта:
Public B As DAO.Recordset


Цитата:
откуда ты это все знаешь?

А я вобщем-то, по большому счёту, ничего и не знаю
Автор: Raisa
Дата сообщения: 29.04.2004 08:33
Не понимаю. У меня 3 запроса. При запуске каждого из них выдается строка в которой нужное мне значение. Как это значение присвоить переменной модуля?
Автор: Felix
Дата сообщения: 29.04.2004 11:57
Понятно, я думал у тебя на выходе массив значений....

Если у тебя просто строка, то объяви переменную

----- Модуль 1 --------
public B as string дальше
b = Значение на выходе запроса (строка)


----- Модуль 2 ---------
.....
Поле1.Text = b
---------------------------

т.е. у тебя значение из запроса попадёт куда нужно...

З.Ы. Если мы опять друг-друга не поняли, то приведи пример куска программы где тебе нужно это сделать...
Автор: Child
Дата сообщения: 07.05.2004 19:16
Как закопировать таблицу из одной БД в другую ?
Как закопировать наново и как добавить к уже существующей таблице?
я так понял что работа с таблицами полностью реализовано в АДО ?
Автор: JonnySilver
Дата сообщения: 20.05.2004 05:59
' В ADO так делается
' ========================================
' в модуле
Public cn As New ADODB.Connection
Public cm As New ADODB.Command
Public rs As New ADODB.Recordset

' в модуле
sub MakeConnect()
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & _
"\База.mdb;Mode=ReadWrite;Persist Security Info=False"

Set cm.ActiveConnection = cn

Set rs.ActiveConnection = cn
rs.CursorLocation = adUseClient
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
end sub

' ========================================
' в модуле формы
'
' обновление записи
Private Sub btnUpdate_Click()
rs!Поле_1 = Me.Text1.Text
rs!Поле_2 = Me.Text2.Text
rs!Поле_3 = Me.Text3.Text

rs.Update
End Sub

' добавление записи
Private Sub btnNew_Click()

On Error Resume Next

cm.CommandText = "INSERT INTO Таблица_1 (Поле_1,Поле_2,Поле_3) VALUES ('" & _
CDate(Date) & "','" & CDate(Time()) & "','Новая запись');"

cm.Execute
rs.Requery
rs.MoveLast

End Sub

' удаление записи по условию
Private Sub btnDel_Click()
On Error Resume Next
Dim m_CurRec As Long

Dim Response As Integer
Dim Msg As String, Title As String

Msg = "Вы действительно хотите удалить текущую запись ?"
Title = "Внимание"
Response = MsgBox(Msg, vbYesNo + vbCritical + vbDefaultButton2, _
Title)
If Response <> vbYes Then
Exit Sub
End If

m_CurRec = rs.AbsolutePosition

m_Bookmark = rs.Bookmark
cm.CommandText = "delete from Таблица_1 where Поле_3='" & me.Text3.Text & "'
cm.Execute

' загрузка обновленного рекордсета
Call LoadDataFromDB

' возврат к нужной записи
If m_CurRec >= rs.RecordCount Then
rs.MoveLast
Else
rs.Bookmark = m_Bookmark
End If
End Sub

' удаление всех записей
Private Sub btnDelAll_Click()
On Error Resume Next
Dim Response As Integer
Dim Msg As String, Title As String
Msg = "Вы действительно хотите удалить все записи "
Title = "Внимание"
Msg = Msg & " из базы ?"

cm.CommandText = "delete from Таблица_1"

Response = MsgBox(Msg, vbYesNo + vbCritical + vbDefaultButton2, _
Title)
If Response <> vbYes Then ' User chose Yes.
Exit Sub
End If

cm.Execute

Call LoadDataFromDB
End Sub

' заргрузка данных в рекордсет и датагрид
Private Sub LoadDataFromDB()
Dim sCmd As String

On Error Resume Next

sCmd = "SELECT Поле_1,Поле_2,Поле_3 from Таблица_1"

If rs.State = adStateOpen Then
rs.Close
End If

rs.Open sCmd

Set DataGrig1.DataSource = rs

End Sub


Добавлено
' открытие множества форм frmMyForm

Dim f As frmMyForm

For i = 1 To iFormNeeded
Set f = New frmMyForm
f.Show
Next
Автор: Blazer
Дата сообщения: 20.06.2004 13:21
Народ, два вопроса:
1. Как в цикле копировать из таблицы по n строк, скажем первые три, потом следующие три и т.д?
2. Как получить/записать в конкретное поле для определенной строки (в таблице, не на форме!), например в строку №2, поле с именем Sum?

Спасибо!
Автор: Rodion
Дата сообщения: 08.07.2004 10:50
Как можно из процедуры Access-а узнать есть ли комп в сети и есть ли на нем определенный файл, залочен он или нет, при этом я имею на этом компе все права?
Все компы на Win2000 pro
Автор: Child
Дата сообщения: 14.07.2004 10:52
Вопрос :
как в аксессе (может и инструментами ВБА) сделать так :
когда значение в конкретной ячейке переступает какой-то порог значений, чтобы оно краснело? Это можно реализовать в экселе как-то. Я своими глазами видел это в сводных таблицах. Но мне надо так в аксессе сделать.
Автор: MrZeRo
Дата сообщения: 16.07.2004 09:51
Child
В Access есть такое понятие - "условное форматирование".
Надо выделить свой элемент ввода, а потом пойти в меню (кажется, "Format") и там будет соответствующий пункт.
Автор: Child
Дата сообщения: 16.07.2004 16:00
Кто работал со сводными таблицами в аксесе? Они полностью по функциям и возможностям совпадают с экселевским?
Автор: clstl
Дата сообщения: 20.06.2005 16:16
Забыл пароль редактора VB в базе Microsoft Access как востановить пароль?
Автор: Sleepwalker
Дата сообщения: 21.06.2005 20:30
clstl
программами для восстановления. хоть одну пробовал?
Автор: clstl
Дата сообщения: 21.06.2005 21:01
Пробовал, не помогает! Если восстанавливать базу с помощью «AccessRecovery» я получаю только таблицы и запросы, формы представляют собой нефункциональные макеты, не содержащие процедур, модулей в восстановленной базе нет вообще.
Автор: Sleepwalker
Дата сообщения: 21.06.2005 21:37
clstl
а если посмотреть не на программы восстановления, а которые целенаправленно на пароли рассчитаны?
Автор: clstl
Дата сообщения: 21.06.2005 23:33
Они не поддерживают формат (.mdb)!
Автор: ShIvADeSt
Дата сообщения: 22.06.2005 01:13
clstl
Sleepwalker
Восстановление паролей это в другом разделе спрашивать надо. Здесь только программирование.
Автор: clstl
Дата сообщения: 22.06.2005 21:06
К ShIvADeSt. Пожалуйста подскажите в каком разделе?

Страницы: 1234567891011121314151617

Предыдущая тема: Delphi+ADO


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