Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VBA for Access

Модерирует : ShIvADeSt

ShIvADeSt (14-09-2011 00:58): Все обсуждение тут http://forum.ru-board.com/topic.cgi?forum=33&topic=0357&start=1180  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

   

Raisa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как с помощью VBA  создать новую запись в таблице?

Всего записей: 8 | Зарегистр. 21-04-2004 | Отправлено: 16:55 21-04-2004
Felix



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Необходимо добавить:
'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
   

Всего записей: 965 | Зарегистр. 20-01-2002 | Отправлено: 09:07 22-04-2004
Raisa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, получилось. Только теперь новая проблема. Сделала свободное поле в форме. Ввожу туда данные, а модуль эти данные почему то невидит. Пишит значение = Null. Что делать?  

Всего записей: 8 | Зарегистр. 21-04-2004 | Отправлено: 09:59 22-04-2004
Felix



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Это решабельно так:
 
Me!Поле1.SetFocus
rstCurr.Fields("Имя поля").Value = Me!Поле1.Text

Всего записей: 965 | Зарегистр. 20-01-2002 | Отправлено: 13:07 22-04-2004
Raisa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли сделать так, чтобы при открытии одного окна, открывалось сразу 3 формы? Но мне нужно так, чтобы они были равноправными, т.е. , чтобы подчиненность не присутствовала.

Всего записей: 8 | Зарегистр. 21-04-2004 | Отправлено: 09:15 23-04-2004
Felix



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Несколько не понимаю, что имеется ввиду под словом "окно" и про подчинённость.
Если нужно одновременное открытие какого-то количества форм, то можно сделать так:
 
Private Sub Form_Open(Cancel As Integer) ' Обработчик открытия одной из форм
  DoCmd.OpenForm ("Форма2")
  DoCmd.OpenForm ("Форма3")
End Sub

Всего записей: 965 | Зарегистр. 20-01-2002 | Отправлено: 09:57 23-04-2004
Raisa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я слышала, что вроде можно создать кнопочную форму, при вызове которой можно открыть сразу несколько форм. Но я не знаю как это сделать . Можешь помочь? Еще, я бы хотела, чтобы введя значения в одну форму, эти данные передавались в другую без закрытия последней.    

Всего записей: 8 | Зарегистр. 21-04-2004 | Отправлено: 10:24 23-04-2004
Felix



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

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

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

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

 
А значения куда вводятся?!? в таблицу, в Едит или ещё куда-нибудь

Всего записей: 965 | Зарегистр. 20-01-2002 | Отправлено: 10:59 23-04-2004
Raisa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне надо через форму1 заполнить таблицу. В этой форме1 две записи берут значения из других двух форм(форма2, форма3). Я хочу, чтобы все эти три формы одновременно открывались и обновляя записи в одной форме(форме2 или форме3), эти данные передовались в форму1. Сейчас, чтобы добиться этого мне приходится закрывать форму1 и открывать ее заново. Такое возможно?

Всего записей: 8 | Зарегистр. 21-04-2004 | Отправлено: 11:22 23-04-2004
Felix



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Значения полей таблицы принадлежат полям какой формы?

Всего записей: 965 | Зарегистр. 20-01-2002 | Отправлено: 12:18 23-04-2004 | Исправлено: Felix, 12:21 23-04-2004
Raisa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Формы1
 
Добавлено
Еще, на счет
 
Цитата:
Me!Поле1.SetFocus  
rstCurr.Fields("Имя поля").Value = Me!Поле1.Text

пишет: Invalid use of Me keyword

Всего записей: 8 | Зарегистр. 21-04-2004 | Отправлено: 12:36 23-04-2004
Felix



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Если есть возможность, то отправь базу мне на почту (можно без данных), и я попытаюсь тебе помочь

Всего записей: 965 | Зарегистр. 20-01-2002 | Отправлено: 07:58 27-04-2004 | Исправлено: ShIvADeSt, 04:33 22-10-2011
Raisa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я уже разобралась с формами. Ты мне очень помог, спасибо . Если не затруднит, скажи, как переменной в модуле передать значения, которые выходят в запросе? И еще, откуда ты это все знаешь?

Всего записей: 8 | Зарегистр. 21-04-2004 | Отправлено: 09:54 28-04-2004
Felix



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Объяви глобальную переменную и её будет видно во всех модулях проекта:
Public B As DAO.Recordset
 

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

А я вобщем-то, по большому счёту, ничего и не знаю

Всего записей: 965 | Зарегистр. 20-01-2002 | Отправлено: 07:45 29-04-2004
Raisa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не понимаю. У меня 3 запроса. При запуске каждого из них выдается строка в которой нужное мне значение. Как это значение присвоить переменной модуля?

Всего записей: 8 | Зарегистр. 21-04-2004 | Отправлено: 09:33 29-04-2004
Felix



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Понятно, я думал у тебя на выходе массив значений....
 
Если у тебя просто строка, то объяви переменную  
 
----- Модуль 1 --------
public B as string дальше
b = Значение на выходе запроса (строка)
 
 
----- Модуль 2 ---------
.....
Поле1.Text  = b
---------------------------
 
т.е. у тебя значение из запроса попадёт куда нужно...
 
З.Ы. Если мы опять друг-друга не поняли, то приведи пример куска программы где тебе нужно это сделать...

Всего записей: 965 | Зарегистр. 20-01-2002 | Отправлено: 12:57 29-04-2004 | Исправлено: Felix, 08:27 11-05-2004
Child



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как закопировать таблицу из одной БД в другую ?
Как закопировать наново и как добавить к уже существующей таблице?
я так понял что работа с таблицами полностью реализовано в АДО ?

----------
Аренда сервера по выгодным ценам.
Почемучка! Ответы на ваши вопросы..

Всего записей: 1349 | Зарегистр. 25-04-2003 | Отправлено: 20:16 07-05-2004
JonnySilver



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
'  В 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

Всего записей: 151 | Зарегистр. 03-09-2003 | Отправлено: 06:59 20-05-2004
Blazer

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ, два вопроса:
1. Как в цикле копировать из таблицы по n строк, скажем первые три, потом следующие три и т.д?
2. Как получить/записать в конкретное поле для определенной строки (в таблице, не на форме!), например в строку №2, поле с именем Sum?
 
Спасибо!

Всего записей: 182 | Зарегистр. 27-10-2001 | Отправлено: 14:21 20-06-2004
Rodion

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как можно из процедуры Access-а узнать есть ли комп в сети и есть ли на нем определенный файл, залочен он или нет, при этом я имею на этом компе все права?
Все компы на Win2000 pro

Всего записей: 312 | Зарегистр. 21-02-2002 | Отправлено: 11:50 08-07-2004 | Исправлено: Rodion, 14:53 08-07-2004
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VBA for Access
ShIvADeSt (14-09-2011 00:58): Все обсуждение тут http://forum.ru-board.com/topic.cgi?forum=33&topic=0357&start=1180


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru