![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 03.09.2012
Сообщений: 7
|
![]()
скажите пожалуйста как вставить данные из таблицы access в форму?
есть форма, которая содержит поля(дата, название товара, страна_производитель, базис поставки,период поставки(6 пар полей)-период к примеру с 1 сентября 2012 по 1 октября 2012 и таких еще 2 пары периодов и соответствующая каждому периоду цена - стоимость eur).остальные поля общие. и вот нужно при введении даты в форме сразу проверять есть такая дата уже в таблице, если есть и название товара совпадает, то автоматом в форму вставлять имеющиеся данные из таблицы и поле стоимость eur должно быть доступно для редактирования. пользователь может поменять стоимоть и при нажатии некой кнопки должен задаваться вопрос с подтверждением-обновить цены и при нажатии да, стоимоть должна обновляться в таблице. если такой даты в таблице нет, то выполнять нижеописанный код можно как-то модифицировать этот код, который добавляет данные в таблицу? Private Sub Добавить_Click() Set rs = New ADODB.Recordset Set cnn = CurrentProject.Connection c = Me.[ПолеСоСписком41] s = Me.[ПолеСоСписком39] rs.Open "SELECT * FROM [европа_масла_1]", cnn, adOpenKeyset, adLockOptimistic If Format(s, "yyyymmdd") <= Format(c, "yyyymmdd") And Me.[Поле25] <> Empty Then Do While Format(s, "yyyymmdd") <= Format(c, "yyyymmdd") rs.AddNew rs![Название_товара] = Me.[Поле37] rs![Дата] = Format(Me.[Поле3], "yyyymmdd") rs![страна_производитель] = Me.[ПолеСоСписком5] rs![базис_поставки] = Me.[ПолеСоСписком7] rs![Стоимость_EUR] = Me.[Поле25] rs![Период_поставки] = Format(s, "mmmyyyy") s = DateAdd("m", 1, s) rs.Update Loop Else: MsgBox "Проверьте корректность введения периода поставки и цены USD" End If c = Me.[ПолеСоСписком45] s = Me.[ПолеСоСписком43] If Format(s, "yyyymmdd") <= Format(c, "yyyymmdd") And Me.[Поле49] <> Empty Then Do While Format(s, "yyyymmdd") <= Format(c, "yyyymmdd") rs.AddNew rs![Название_товара] = Me.[Поле37] rs![Дата] = Format(Me.[Поле3], "yyyymmdd") rs![страна_производитель] = Me.[ПолеСоСписком5] rs![базис_поставки] = Me.[ПолеСоСписком7] rs![Стоимость_EUR] = Me.[Поле49] rs![Период_поставки] = Format(s, "mmmyyyy") s = DateAdd("m", 1, s) rs.Update Loop Else: MsgBox "Проверьте корректность введения периода поставки и цены USD" End If c = Me.[ПолеСоСписком48] s = Me.[ПолеСоСписком46] If Format(s, "yyyymmdd") <= Format(c, "yyyymmdd") And Me.[Поле50] <> Empty Then Do While Format(s, "yyyymmdd") <= Format(c, "yyyymmdd") rs.AddNew rs![Название_товара] = Me.[Поле37] rs![Дата] = Format(Me.[Поле3], "yyyymmdd") rs![страна_производитель] = Me.[ПолеСоСписком5] rs![базис_поставки] = Me.[ПолеСоСписком7] rs![Стоимость_EUR] = Me.[Поле50] rs![Период_поставки] = Format(s, "mmmyyyy") s = DateAdd("m", 1, s) rs.Update Loop Else: MsgBox "Проверьте корректность введения периода поставки и цены USD" End If rs.Close With CurrentProject.Connection ' strSQL = _ "Update [европа_масла_1] " & _ "set спот='спот' " & _ "from " & _ "(select top 1 * from [европа_масла_1] " & _ "where [европа_масла_1].[дата] = '" & Format(Me.[Поле3], "yyyymmdd") & _ "' And [европа_масла_1].[базис_поставки] = '" & Me.[ПолеСоСписком7] & _ "' And [европа_масла_1].[Страна_производитель] = '" & Me.[ПолеСоСписком5] & "'" & _ "order by [европа_масла_1].[дата] desc,[период_поставки]) as t " & _ " where t.[дата]=[европа_масла_1].[дата] " & _ " and t.[период_поставки]=[европа_масла_1].[период_поставки] " & _ " and t.[страна_производитель]=[европа_масла_1].[страна_производитель] " & _ " and t.[базис_поставки]=[европа_масла_1].[базис_поставки] " Debug.Print strSQL .Execute strSQL End With End Sub |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 515
|
![]()
Добрый день.
В чём проблема повесить Ваши вышеописанные действия на процедуру обновления даты? |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 03.09.2012
Сообщений: 7
|
![]()
я не представляю как это должно выглядеть на языке vba?
как сравнивать поле из формы с полями таблицы? как вставлять нужные данные в нужные поля? |
![]() |
![]() |
![]() |
#4 | |
Новичок
Джуниор
Регистрация: 03.09.2012
Сообщений: 7
|
![]() Цитата:
ввожу в форму дату к примеру 03.09.2012 жму кнопку проверить дату как при нажатии сделать так чтобы if Me.[Поле3] =any (select [Дата] from [европа_масла_1]) then me.[полесосписком5]=[европа_масла_1].[Страна_производитель] не подскажете как это на vba будет? и с одной ценой-один период записать крайнее значение в [полесосписком39] а другое крайнее в [полесосписком41] их стоимость в поле25 и все это на 1 дату |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 19.07.2012
Сообщений: 520
|
![]()
Для доступа к данным таблицы используются:
а) объект RecordSet; б) функции DFirst, DLoockUp, DCount, DSum и т. д.
Окупант, руки прочь от Украины!!! Слава Героям!
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 20.05.2012
Сообщений: 311
|
![]()
2Myhaylo
Там нет объяснительных шансов. К сожалению |
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 03.09.2012
Сообщений: 7
|
![]() |
![]() |
![]() |
![]() |
#8 | |
Новичок
Джуниор
Регистрация: 03.09.2012
Сообщений: 7
|
![]() Цитата:
Set rs = New ADODB.Recordset Set cnn = CurrentProject.Connection rs.Open "SELECT * FROM [европа_масла_1] where [европа_масла_1].[дата] = '" & Format(Me.[Поле3], "yyyymmdd") & "'", cnn, adOpenKeyset, adLockOptimistic Me.[полесосписком5] = rs![страна_производитель] Me.[полесосписком7] = rs![базис_поставки] а вот как быть с периодом: дата страна_производитель базис поставки период поставки стоимость 03.09.2012 китай fob 01.09.2012 950 03.09.2012 китай fob 01.10.2012 950 в форму должно выводиться 01.09.2012 01.10.2012 950 период должен объединяться в один период пока стоимоть одинаковая крайние значения периоды должны записываться в [полесосписком39] и [полесосписком41] ценна в поле25 потом собираться другой период и записываться в [полесосписком42] и [полесосписком43] ценна в поле26 и 3-й период в [полесосписком44] и [полесосписком45] ценна в поле27 |
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 515
|
![]()
Добрый день.
Для обработки Вашим же методом можно сделать так: Код:
Последний раз редактировалось gluk_fm; 04.09.2012 в 14:34. |
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 03.09.2012
Сообщений: 7
|
![]()
Set rs = New ADODB.Recordset
Set cnn = CurrentProject.Connection rs.Open "SELECT * FROM [европа_масла_1] where [европа_масла_1].[дата] = '" & Format(Me.[Поле3], "yyyymmdd") & "'", cnn, adOpenKeyset, adLockOptimistic Me.[полесосписком5] = rs![страна_производитель] Me.[полесосписком7] = rs![базис_поставки] x = rs![стоимость_eur] Me.[полесосписком39] = rs![период_поставки] Do While not rs.EOF And rs![стоимость_eur] = x Me.[полесосписком41] = rs![период_поставки] rs.MoveNext Loop Me.[поле25] = rs![стоимость_eur] rs.Update x = rs![стоимость_eur] Me.[полесосписком43] = rs![период_поставки] Do While not rs.EOF And rs![стоимость_eur] = x Me.[полесосписком45] = rs![период_поставки] rs.MoveNext Loop Me.[поле49] = rs![стоимость_eur] rs.Update x = rs![стоимость_eur] Me.[полесосписком46] = rs![период_поставки] Do While not rs.EOF And rs![стоимость_eur] = x Me.[полесосписком48] = rs![период_поставки] rs.MoveNext Loop Me.[поле50] = rs![стоимость_eur] rs.Update как-то так....только поле50 последнее не обновляется....говорит конец достигнут...как быть? |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вставить данные в access через c++ | romamoma | C/C++ Базы данных | 2 | 19.04.2012 17:23 |
можно ли открыть форму access в delphi...таблицы подключаются....а форму можно подключить?? | Анна1217 | Помощь студентам | 3 | 06.04.2012 07:56 |
Как скопировать данные таблицы из одной базы access в другую? | AK BULLETS | БД в Delphi | 2 | 31.03.2010 13:09 |
как связать таблицы в access, чтобы данные автоматически копировались? | rudess | Microsoft Office Access | 1 | 15.08.2009 16:22 |
как оператором insert вставить данные сразу в две таблицы? | furstenberg | БД в Delphi | 2 | 18.10.2007 16:39 |