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

» VBA for Access

Автор: filemoto
Дата сообщения: 03.04.2007 09:29
jONES1979
вот, вот... именно поле ОЛЕ. там у меня есть рисунок jpg.
можно ли его в эту присоединённую рамку объекта выводить?
Автор: AndVGri
Дата сообщения: 03.04.2007 10:04
filemoto
Поставть Access с примерами - да и посмотри в
"C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Борей.mdb"
Автор: jONES1979
Дата сообщения: 03.04.2007 14:13
filemoto
я тоже столкнулся с тем, что эта самая "пр.рамка.объекта" не отрисовывает jpg только отображает иконку, хотя как положено, считывает их(данные) из БД для каждой записи соответственно. В этом можно убедиться даблкликнув по ней...
С bmp таких - проблем нет.

ситуация у меня наблюдалась в Access XP и Access 2003. В 2007 -ом не проверял

Автор: filemoto
Дата сообщения: 04.04.2007 12:43
jONES1979
там не так просто её отрисовать. стандартно, акцесс, может отрисовать только BMP и DIB, вродебы, из поля ОЛЕ(с 2003 ещё поддерживается GIF, а может и с 2000-го). фукции конверта JPG из ОЛЕ нету. я находил пример отображения, там несложный код, но что-то не могу отыскать теперь. там, если не ошибаюсь было PictureFromBits
Автор: jONES1979
Дата сообщения: 04.04.2007 13:15
filemoto
Ну вот и я про тоже Если найдешь код - делись
Автор: pit23
Дата сообщения: 22.08.2007 11:44
Здравствуйте. А можно ли в VBA программно послать экселевский файл на печать?
Заранее благодарен за любую оказанную помощь.
Автор: jONES1979
Дата сообщения: 23.08.2007 19:23
pit23

Код:
Private Sub Кнопка0_Click()
On Error GoTo Err_Кнопка0_Click

Dim oApp As Object


Set oApp = CreateObject("Excel.Application")
oApp.Visible = False

On Error Resume Next

oApp.Workbooks.Open Filename:="C:\My documents\Контроль.xls"
oApp.ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
oApp.Quit

Exit_Кнопка0_Click:
Exit Sub

Err_Кнопка0_Click:
MsgBox Err.Description
Resume Exit_Кнопка0_Click

End Sub
Автор: bibitaxi
Дата сообщения: 05.09.2007 10:26
Коллеги! А не знаете, где будет искать БД метод OpenDatabase, если полный путь не указан, а только имя файла?
Автор: Dixi257
Дата сообщения: 05.09.2007 14:42
bibitaxi
Обычно в Моих Документах ищет. Думаю, это есть где-нибудь в настройках
Автор: Bagira3785
Дата сообщения: 05.10.2007 19:29
Здравствуйте! Ребят, кто подскажет? У меня есть база по начислению зарплаты, но никак не получается одна штука. В форме есть поле СумОклад, есть список СписокНачислениеОклад, созданный на основе таблицы Начисление2.
В форме источник записей я указала SELECT Начисление2.* FROM Начисление2;
Таблица Начисление2:КодНачисление (счетчик), Месяц, Год, КодПлан (числовой), КодРаботник(числовой), Оклад (числовой)
В форме есть кнопка ИзменитьОклад, есть элемент SpinButton.1- КнСумОклад. Нужно, чтобы щелкая двойным щелчком в списке, в этом списке значение в поле оклад изменилось на значение которое будет введено в поле СумОклад. Если нажать на кнопку ИзменитьОклад, то выделялся бы весь список и так же изменялось бы значение в поле оклад. А еще как сделать так, чтобы в списке можно было бы выделять несколько записей и так же изменять оклад на то значение, которое стоит в поле СумОклад? Я вот тут кое-чего наворочала, но видно неправильно:

Private Sub Form_Open(Cancel As Integer)

'Если СписокНачислениеОклад пуст -
If СписокНачислениеОклад.ListCount = 0 Then
'закрыть доступ к изменению оклада
ДоступОклад False
Else
'иначе - открыть доступ к изменению оклада,
ДоступОклад True
'выделить 1-ю строку списка
СписокНачислениеОклад = СписокНачислениеОклад.Column(0, 0)
End If

End Sub
Private Sub СумОклад_Exit(Cancel As Integer)
On Error Resume Next
Dim N As Long

'Проверка корректности ввода
N = CLng(СумОклад.Text)
'Если введено не число или запредельное значение
If (Err.Number <> 0) Or (N < КнСумОклад.Min) Or (N > КнСумОклад.Max) Then
'сообщаем об этом
MsgBox "Введите число в диапазоне от " & CStr(КнСумОклад.Min) & " до " _
& CStr(КнСумОклад.Max), vbExclamation, "Ошибка ввода"
'Очищаем объект Err и возвращаемся в поле "СумОклад"
Err.Clear
Cancel = True
Else
'При корректном вводе поручаем обработку ошибок системе
On Error GoTo 0
'и меняем оклад
ИзменитьОклад
КнСумОклад.Value = СумОклад
End If

End Sub

Private Sub СписокНачислениеОклад_DblClick(Cancel As Integer)
Dim База As Object, Начисление2 As Object

Set База = CurrentDb
Set Начисление2 = База.OpenRecordset("Начисление2", dbOpenDynaset)
ДоступОклад True
With Начисление2
'Ищем соответствующую запись в таблице Начисление2.
.FindFirst "[КодПлан] = " & CStr(СписокНачислениеОклад)
КнСумОклад = СумОклад
.Edit
![Оклад] = СумОклад
.Update
СписокНачислениеОклад.Requery
Me.Requery

.Close
End With
Set База = Nothing

End Sub

Private Sub ИзменитьОклад()
Dim База As Object, Начисление2 As Object

Set База = CurrentDb
Set Начисление2 = База.OpenRecordset("Начисление2", dbOpenDynaset)
With Начисление2
.FindFirst "[КодПлан] = " & CStr(СписокНачислениеОклад)
.Edit
![Оклад] = СумОклад
.Update
СписокНачислениеОклад.Requery
Me.Requery
.Close
End With
Set База = Nothing

End Sub

Private Sub ДоступОклад(Доступ As Boolean)
КнСумОклад.Enabled = Доступ
СумОклад.Enabled = Доступ
End Sub
Может у кого есть что-то похожее по сути, может быть вышлете на адрес:UchBagira@yandex.ru

--------------------------------------------------------------------------------



Автор: AlexeiKozlov
Дата сообщения: 05.10.2007 20:42
Bagira3785
у тебя пока одна проблема,нету противоречия. в чем тебе помочь,поэтому не понятно.сформируй противоречие.код как код.помочь с идеей? слишком долго.давай потрудись над формуливкой противоречия.
Автор: Bagira3785
Дата сообщения: 06.10.2007 20:41
AlexeiKozlov
Просто это не хочет работать. Может тебе выслать пример базы, чтобы понять в чем проблема? Тогда куда выслать?
Автор: AlexeiKozlov
Дата сообщения: 06.10.2007 21:55
Bagira3785
так что не хочет работать? выдели участик кода,которым предназначено чтото сделать,и напиши что они на самом деле делают.пойми одно.я пойму,когда ты дашь понять.а самому мне понимать не охото.

Добавлено:
или приходи на sql.ru там раздел ms access. там ты найдешь ,того кто захочет посмотреть файл твой,понять,помочь
Автор: agro
Дата сообщения: 18.10.2007 13:29
здрасте

вот такая ситуация есть таб Visit в ней разные поля ...
1 из них Complaints - тип Memo
есть таб complaintOrigin (там у меня варианты для подстановки в поле Compliants)

нужно сделать так чтобы при щелчке в форме Visit в поле Compliants открывалось
что-то(форма) позволяющее отобразить все варианты из compliantOrigin и САМОЕ главное по щелчку мыши в списке то на чём щёлкаешь переносилось в поле Compliant

т.е. должна формироваться текстовая строка из заготовок хранящихся в таб compliantOrigin

-----------------------------------------
обработать клик в поле я умею уже
но какое событие возникает при щелчке на конретной записи не знаю и возникает ли вообще

могу выслать имеющийся кусок базы с этими таб

Автор: a22ntaque
Дата сообщения: 25.10.2007 13:18
подскажите, пожалуйста:

какой функцией можно узнать windows логин юзера?
какой функцией можно узнать сетевой логин юзера?

Application.CurrentUser возвращает access login (в моем случае "admin")
Автор: jONES1979
Дата сообщения: 25.10.2007 13:36
a22ntaque

Код:
Set objNetwork = CreateObject("Wscript.Network")

MsgBox objNetwork.UserDomain
MsgBox objNetwork.UserName
Автор: a22ntaque
Дата сообщения: 25.10.2007 14:49
супер! спасибо!
Автор: Bagira3785
Дата сообщения: 21.11.2007 20:27
Подскажите, пожайлуста, как записать в коде, чтобы при перебросе данных из одной таблицы в другую отрицательное число преобразовывалось в положительное? Мне нужно, чтобы из СпДолги поле СумРУБ, где число отрицательное, в таблице ВзятиеВыплатОбщая в поле СуммРУБ оно становилось положительным.
Код такой:
Private Sub СпДолги_DblClick(Cancel As Integer)
Dim База1 As Object, ВзятиеВыплатОбщая As Object

Set База1 = CurrentDb
Set ВзятиеВыплатОбщая = База1.OpenRecordset("ВзятиеВыплатОбщая", dbOpenDynaset)

With ВзятиеВыплатОбщая
'Ищем соответствующую запись в таблице ВзятиеВыплатыОбщая.
.FindFirst "[КодДолг] = " & CStr(СпДолги)
'Если в таблице ВыплатыОбщая отсутствует соответствующая запись -
If .NoMatch Then
'добавляем запись.
.AddNew
![КодДолг] = СпДолги
![КодРаботник] = СпДолги.Column(1)
![КодСписок] = СпДолги.Column(3)
![Месяц] = СпДолги.Column(2)
![Год] = СпДолги.Column(4)
![СуммаРУБ] = СпДолги.Column(5)
![Перенести] = True
.Update

СпВыплатыОбщая.Requery
Me.Requery
СпВыплатыОбщая = СпДолги
'СпВыплатыОбщая_AfterUpdate

End If
.Close
End With
Set База1 = Nothing

End Sub
Может кто подскажет? Очень нужно.
Автор: AndVGri
Дата сообщения: 22.11.2007 04:49
Bagira3785
Есть такая функция в VBA Abs - возвращает абсолютное значение числа (то есть положительное
Автор: Bagira3785
Дата сообщения: 22.11.2007 17:29
AndVGri
Спасибо за подсказку, все работает.
Автор: Bagira3785
Дата сообщения: 23.11.2007 16:14
Как в коде записать отмену действия нажатия кнопки, если, например, выполняется условие, при котором нужно отменить дальнейшее выполнение. В данном случае, кнопка выполняет запрос на добавление. Вообще это реально? Я пробовала записать так:
Private Sub КнДобДолги_Click()
On Error GoTo Err_КнДобДолги_Click

If [КодСписок] > 0 Then
КнДобДолги_Exit
End If

Dim stDocName As String

stDocName = "Запрос6"
DoCmd.OpenQuery stDocName, acNormal, acEdit

Exit_КнДобДолги_Click:
Exit Sub

Err_КнДобДолги_Click:
MsgBox Err.Description
Resume Exit_КнДобДолги_Click
End Sub
Но при выполенении вваливаюсь в редактор и выделяется КнДобДолги_Exit и выдает, что это не применимо.
Автор: AlexeiKozlov
Дата сообщения: 23.11.2007 20:11
Bagira3785
вот что вам не пришлось на том форуме

у тебя метка
If [КодСписок] > 0 Then
-> КнДобДолги_Exit
End If
называеться иначе чем ,метка Err_КнДобДолги_Click ,имена должны быть одинаковы.
просто я перестал понимать людей,которые методом тыка пробуют. ведь сейчас ж книжек электронных выше крыши. на nnm.ru даже дофига книг русских,как программить в access.
Автор: apexfmm
Дата сообщения: 24.11.2007 16:30
AlexeiKozlov


Цитата:
на nnm.ru даже дофига книг русских,как программить в access

3 устаревших ссылки
лучше уж идти сюда http://www.spam_detected/ + поиск ACCESS
Автор: Bagira3785
Дата сообщения: 25.11.2007 20:52
AlexeiKozlov
Спасибо за подсказку, попробую. У меня много книг по ассеss, действительно, там много есть чего интересного, но то что мне нужно, как назло не описано. И еще, вроде находишь, что надо, а когда применишь к своему случаю, ничего не выходит.
Еще раз спасибо за помощь.
Автор: Solnishka
Дата сообщения: 25.11.2007 21:32
Люди!
Помогите пожалуйста кто чем сможет (очень надо - диплом горит).
В программировании я прям скажем новичок.
Есть проблема:
готовую программу на VBA для расчёта амортизации нужно переписать под Excel.
Я уже бьюсь над ней довольно долго и никак не получается.

[no]
[more]
Option Compare Database
Option Explicit
Dim dblПервичнаяСтоимость As Double
Dim dblОстаточнаяСтоимость As Double
Dim intВремяАмортизации As Integer
Dim intПериодРасчета As Integer
Dim intКратность As Integer
Dim blnПризнак As Boolean
Dim dblВеличинаАмортизации As Double
Private Sub Form_Load()
Поле1.SetFocus
Поле1.Text = ""
Поле2.SetFocus
Поле2.Text = ""
Поле3.SetFocus
Поле3.Text = ""
Поле4.SetFocus
Поле4.Text = ""
Поле5.SetFocus
Поле5.Text = ""
Поле6.Visible = True
Поле6.SetFocus
Поле6.Text = ""
Переключатель1.Value = True 'Включение стандартного метода расчета
Переключатель2.Value = False 'Отключение метода расчета с кратностью
Надпись9.Visible = False 'Скрытие надписи
Поле1.SetFocus
Поле6.Visible = False 'Скрытие поля
End Sub

Private Sub Кнопка1_Click()
blnПризнак = True
Поле1.SetFocus
If Поле1.Text = "" Then blnПризнак = False
Поле2.SetFocus
If Поле2.Text = "" Then blnПризнак = False
Поле3.SetFocus
If Поле3.Text = "" Then blnПризнак = False
Поле4.SetFocus
If Поле4.Text = "" Then blnПризнак = False
If blnПризнак = False Then
MsgBox " Недостаточно данных для расчета", vbExclamation, "Амортизация"
Exit Sub
End If
Поле1.SetFocus
dblПервичнаяСтоимость = CDbl(Поле1.Text)
Поле2.SetFocus
dblОстаточнаяСтоимость = CDbl(Поле2.Text)
Поле3.SetFocus
intВремяАмортизации = CInt(Поле3.Text)
Поле4.SetFocus
intПериодРасчета = CInt(Поле4.Text)
If dblПервичнаяСтоимость < dblОстаточнаяСтоимость Then
MsgBox " Ошибка! Остаток больше начальной стоимости!", _
vbExclamation, "Амортизация"
Поле1.SetFocus
Exit Sub
End If
If intВремяАмортизации < intПериодРасчета Then
MsgBox " Ошибка в сроке амортизации!", _
vbExclamation, "Амортизация"
Поле3.SetFocus
Exit Sub
End If
If Переключатель1.Value = True Then
blnПризнак = True
Else
blnПризнак = False
End If
If blnПризнак = True Then
dblВеличинаАмортизации = SYD(dblПервичнаяСтоимость, _
dblОстаточнаяСтоимость, intВремяАмортизации, intПериодРасчета)
Else
Поле6.SetFocus
intКратность = CInt(Поле6.Text)
dblВеличинаАмортизации = DDB(dblПервичнаяСтоимость, _
dblОстаточнаяСтоимость, intВремяАмортизации, intПериодРасчета, intКратность)
End If
Поле5.SetFocus
Поле5.Text = CStr(dblВеличинаАмортизации)
End Sub

Private Sub Кнопка22_Click()
Dim strFrm As String
strFrm = "Расчет Амортизации"
DoCmd.Close acForm, strFrm
End
End Sub

Private Sub Переключатель1_Click()
Переключатель2.Value = False
Надпись9.Visible = False
Поле6.Visible = False
End Sub

Private Sub Переключатель2_Click()
Переключатель1.Value = False
Надпись9.Visible = True
Поле6.Visible = True
Поле6.SetFocus
'Поле6.Text = ""
Поле6.Value = ""
End Sub
[/more] [/no]
Автор: hellslade
Дата сообщения: 10.12.2007 07:23
Всем здрасте!
столкнулся с такой проблемой:
в Access 2007 создаю форму и необходимо сделать следующее: при нажатии клавиши F8 текущая запись должна удаляться! пробовал в свойствах поля писать обработку на событие "Нажатие клавиши", но в ней, как я понял, не обрабатываются "эфки"
подскажите, кто знает, как быть? спасибо!
Автор: dneprcomp
Дата сообщения: 11.12.2007 05:12
hellslade

Код: Private Sub Form_Load()
Me.KeyPreview = True
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) 'or Private Sub Form_KeyUp
Select Case KeyCode
Case vbKeyF2
' Process F2 key events.
Case vbKeyF3
' Process F3 key events.
Case vbKeyF8
' Process F8 key events.
Case Else
End Select
End Sub
Автор: hellslade
Дата сообщения: 11.12.2007 07:04
dneprcomp
Спасибо, выручил, теперь работает!

Добавлено:
dneprcomp
возникла еще одна проблемка
у аксеса на эфки забиндины стандартные функции (например на Ф7 проверка орфографии), можно это отключить в коде?

Добавлено:
Сделал так: KeyCode = 0
работает! ))))))

Добавлено:
Подскажите, пожалуйста.
Пишу удаление записи,
Код: Private Sub Наименование_KeyDown(KeyCode As Integer, Shift As Integer)
Dim dbsCurr As Database
Dim rstCurr As DAO.Recordset

Select Case KeyCode
Case vbKeyF8
Set dbsCurr = Access.CurrentDb
Set rstCurr = dbsCurr.OpenRecordset("&#206;&#240;&#227;&#224;&#237;&#232;&#231;&#224;&#246;&#232;&#232;")

Do Until rstCurr.EOF
If rstCurr![Код] = Me.Код Then
rstCurr.Delete
[Form_Список проектов].Refresh
Exit Sub
End If
rstCurr.MoveNext
Loop
Case Else
End Select
End Sub
Автор: BILIOUS
Дата сообщения: 11.12.2007 12:32
Есть две формы: СписокКлиентов и ИнформацияОКлиенте. Нужно, чтобы по двойному клику в поле "Фамилия" открылась форма ИнформацияОКлиенте. Помогите, пожалуйста, исправить этот листинг(проблема в том, что тут требуется ввести фамилию ):

Код:
Private Sub Фамилия_DblClick(Cancel As Integer)
DoCmd.OpenForm "ИнформацияОКлиенте", acNormal, , "Фамилия=" & Фамилия

End Sub
Автор: hellslade
Дата сообщения: 13.12.2007 07:31
как можно сделать такую вещь: в таблице есть поле "Затраты" оно должно автоматически вычисляться, но при должна быть возможность его изменить. я сделал вычисляемое поле и хотел на изменение этого поля повесить присваивание значения, но не могу понять почему событие не срабатывает!

Код:
Private Sub Поле35_AfterUpdate()
If MsgBox("Realy?", vbYesNo) = vbYes Then
Me.Затраты_план.Value = Me.Поле35.Value
End If
End Sub

Страницы: 1234567891011121314151617

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


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