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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

Открыть новую тему     Написать ответ в эту тему

Guest

BANNED
Редактировать | Цитировать | Сообщить модератору
   
 
Обсуждаем вопросы только по Access VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.

 

NB! Дублирующая тема VBA for Access закрыта во избежание путаницы. Оставлена эта, как более ранняя и имеющая больше сообщений.

Смежные темы:
Помощь в создании SQL-запросов: SQL запрос
Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
Программы » Word FAQ | Excel FAQ | Access FAQ
Прикладное программирование » Word VBA | Excel VBA
Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007
----------
Как в Access перместить запись из одной таблицы в другую (допустим по нажатию кнопки на форме)?

Отправлено: 18:31 05-09-2002 | Исправлено: ALeXkRU, 17:14 03-08-2021
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблему свою решил, но не очень хорошим способом:

Код:
 
SELECT E.Man_ID, E.Event_ID
 FROM Events E,  
  (
  SELECT E1.Man_ID, E1.Event_date, Max(E1.[Order]) AS Max_Order
  FROM Events E1,
   (
   SELECT Events.Man_ID, Max(Events.Event_date) AS Max_Date
   FROM Events
   GROUP BY Events.Man_ID
   ) E2
  WHERE E1.Man_ID = E2.Man_ID AND E1.Event_date = E2.Max_Date
  GROUP BY E1.Man_ID, E1.Event_date
  ) E3
 WHERE E.Man_ID = E3.Man_ID AND E.Event_date = E3.Event_date AND E.[Order] = E3.Max_Order
 GROUP BY E.Man_ID, E.Event_date, E.[Order], E.Event_ID
 ORDER BY E.Man_ID
 

Поскольку запрос будет выполняться довольно часто, его надо сделать быстрым. Есть ли решение без вложенных запросов?

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 12:56 26-02-2006
Demones

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется база учета вызовов на "Скорой помощи". Бумажные наряды заносят в Access. Каждому вызову соответствует свой уникальный номер. Иногда вырубают свет, комп глючит и т. д. и некоторые записи пропадают, а СЧЕТЧИК ПЕРЕСКАКИВАЕТ НА 1(единицу), то есть считает, что данные занесены. Получается, что тот номер, который пропал из базы, соответствует бумажному наряду, то есть один наряд оказывается незанесенным в базу. Каким образом восстановить этот номер, эту запись. ТО, что это можно сделать - абсолютно точно., но я не знаю как?

Всего записей: 61 | Зарегистр. 23-04-2005 | Отправлено: 14:01 26-02-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Demones
Можно уладить шаманским методом: скопировать данные до пропущенного номера в новую таблицу, занести туда недостающую запись, скопировать остальные данные (запросами). Но лучше всё-таки не хранить номер наряда в виде счётчика, поскольку это не служебные данные.

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 14:12 26-02-2006
Demones

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Эту прогу написали сто лет назад. Поэтому сгодня надо выйти из положения, а потом посмотрим, доработаем...  
Спасибо за ответ.  
Подскажите, как "скопировать остальные данные (запросами)"?

Всего записей: 61 | Зарегистр. 23-04-2005 | Отправлено: 01:02 27-02-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Подскажите, как "скопировать остальные данные (запросами)"?

Сначала пишем что-то типа  

Код:
 
select * from <старая таблица> into <новая таблица> where <счётчик> < <глючная запись>  
 

Потом добавить нужную запись, потом тот же запрос, но знак "<" поменять на ">". Если сбоев счётчика несколько, сделать два условия ("<" и ">"). Повторять нужное число раз.

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 08:46 27-02-2006
UncleYurka

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, плз, как поступить?
 
1. Есть две связанные таблицы (1 ко многои)
2. Есть форма для работы с главной таблице и подформа для работы с подчиненной.
3. Как проще сделать удаление записи из главной таблицы, если в подчиненной таблице нет записей, соответствующих этой записи главной таблицы.
 
С уважением, Юрий.

Всего записей: 85 | Зарегистр. 12-07-2004 | Отправлено: 17:55 27-02-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UncleYurka
Открыть схему данных, сделать связь между таблицами, посмотреть на флажок "Обеспечение целостности данных".

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 17:53 02-03-2006
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UncleYurka
У подчиненной формы воспользоваться событием "Удаление", например, чтобы попроще, сделать так:

Цитата:
 
DoCmd.RunSQL "DELETE FROM t1 WHERE NOT EXISTS(SELECT * FROM t2 WHERE t2.t1_id=t1.t1_id)"  
 

Имеется в виду, что t1-ведущая таблица, t2-подчиненная, t1_id - значение первичного ключа ведущей таблицы.
Можно более оптимально сделать, если определить t1_id заранее. Из подчиненной формы это можно сделать как-то так(не ручаюсь за точность):

Цитата:
 
Me.Parent.Form.[t1_id]!
 



----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 10:39 03-03-2006
Stek



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть таблица с записями и форма.  
Как сделать так, что бы при открытие формы из таблицы бралось определенное значение и присваивалось полю в форме.  
 
Запрос построить проблем нет, скажем "SELECT id, book_name FROM books WHERE id = 1"
 
А вот каким образом в VB получить результат от запроса ?
 
Пытался через CurrentDb.Execute , никак не получается.

Всего записей: 1544 | Зарегистр. 19-09-2001 | Отправлено: 20:41 21-03-2006
j7



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Блокировка файла рисунка wmf. Как избежать?
 
Пробую сделать программу печати рисунков в формате wmf (Windows Meta File). Создаю отчет. Вставляю рисунок: Меню «Вставка» -> «Рисунок» -> “f:\План1.wmf” (например).
Меняю тип рисунка на «Внедренный». Цепляюсь за событие «Открытие отчета».
Там вставляю команду:
 Рисунок0.Picture = Me.OpenArgs
А при открытии отчета через OprenArgs передаю название рисунка.
Просматриваю или печатаю.
Теперь, если закрыть отчет, файл wmf-рисунка на диске оказывается заблокированным, то его нельзя удалить. Не помогает даже закрытие mdb-файла. Рисунки особождаются только после закрытия Access’a. Что несколько неудобно.
Может кто встечался с проблемой, или знает путь решения, подскажите, пожалуйста.
Спасибо.

Всего записей: 750 | Зарегистр. 14-12-2001 | Отправлено: 22:07 21-03-2006
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
j7
Не пробовал перед закрытием отчета присваивать Рисунок0.Picture другое(пустое - ?) значение?

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 21:22 22-03-2006
Orakle

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

Помогите пожалуйста
 
Потерян и забыт пороль на БД
Срочно нужно найти способ войти в БД
Access 2000
поможет ли Office 97 Passord Recovery?
Спасибо

Всего записей: 76 | Зарегистр. 23-02-2005 | Отправлено: 14:19 23-03-2006
j7



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

Цитата:
Не пробовал перед закрытием отчета присваивать Рисунок0.Picture другое(пустое - ?) значение?

После твоего совета попробовал. Не получилось.
Пробовал "", менял ссылку на другой файл - "заглушку" (в этом случае блокируются оба WMF).
Причем файл открывается и блокируется столько раз, сколько рисунок появляется на экране (принтере). Контролировал с помощью Iarsn TaskInfo. Access открывает файл (создает его handle), и этот файл так и остается открытым после "обнуления рисунка", закрытия отчета, закрытия MDB. Количество создаваемых Handlе'ов равно количеству показов (не только в режиме просмотра или печати, но и в режиме конструктора). Т.е. если я просмотрел (или напечатал) отчет с файлом "План1.wmf" пять раз, то этот файл будет открыт пять раз, и для него будет столько же хэндлов.  Эти хэндлы закрываются с закрытием Access'a.
Такая беда проявтяется как с отчетом, так и с формой. Она не проявляется если WMF-рисунок - встроенный. Не проявляется с jpeg'ами.
Пробовал делать рисунок встроенный, а затем его переопределять. Снова блокируется. Короче, блокируется всегда при "позднем" связывании.
 
PS А у тебя получилось? Может это у меня Оffice кривой, хотя пробовал на трех компах с разными дистрибутивами (два - 2003SP1 офиса, один - 2002й - XPSP3 )

Всего записей: 750 | Зарегистр. 14-12-2001 | Отправлено: 04:06 25-03-2006
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
j7
Я у себя вообще не пробовал Нет возможности. Похоже, что это свойство Access. Попробуй сделать абдейт. Может поможет. Если нет, можно попробовать освобождать средствами API.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 06:24 25-03-2006
konas

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте
помогите создать в аксесе таблицу со структурой таблицы из Microsoft Sql Server
  Cn.Open strconnect
  Set rst = New ADODB.Recordset
  strSQL = "RC"
  Set t = b.CreateTableDef("dbo_" & strSQL)
  rst.Open strSQL, Cn, , , adCmdTable
      когда пытаюсь создать поля возникает ошибка при преобопазовании типов и условий на полях  
        .Fields.Append .CreateField(rst.Fields.Item(ii).Name, rst.Fields.Item(ii).Type)  
ЧТО НЕВЕРНО? И КАК НАДО?

Всего записей: 9 | Зарегистр. 02-09-2005 | Отправлено: 09:48 27-03-2006
k1sa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В Access 2002 из .mdb файла создал .mde файл. Проблема такая - .mdb файл идет без каких-то проблем, а при работе .mde Access выдает сообщение типа:
The expression On Dbl Click you entered as the event property setting produced the following error: Function is not available in expression in query expression 'IIf(UCase(Per.sexcode)='V' Or Per.sexcode="",[Name],[Namef])'.
На сколько я понимаю это как-то связано с подключением библиотек. Но .mdb файл на том-же компе идет без проблем. В чем может быть проблема? помогите!

Всего записей: 2 | Зарегистр. 28-03-2006 | Отправлено: 14:05 29-03-2006
Angeli

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте,  помогите решить такую проблему: есть две таблицы t1 и t2 совершенно одинаковые с разными данными. Мне нужно t2  слить в t1

Всего записей: 1 | Зарегистр. 30-03-2006 | Отправлено: 08:15 30-03-2006
EZH



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Angeli
Используй конструкцию типа
 
INSERT INTO t1(...) SELECT ... FROM t2
 
Если в таблицах есть поле счетчика, то его видимо не следует включать в перечень полей.
 

Всего записей: 1738 | Зарегистр. 02-09-2004 | Отправлено: 13:26 30-03-2006 | Исправлено: EZH, 13:26 30-03-2006
STEEL



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как внешний ключ создать?
Или как решить след задачу. Есть месяцы январь, февраль и т.п. , за каждым месяцем закреплена некая инфа. В клиенте необходимо по выбраному месяцу выдать инфу.

Всего записей: 2293 | Зарегистр. 06-01-2002 | Отправлено: 22:17 26-04-2006
Portfel



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
День добрый,я вообще профан в аксесе...так что не судите строго
Вопрос в акксесе бд обрабатывает запрос корректно (на 98 винде)...
На XP тот же запрос (2000 аксес и там и там) выдает такую ошибку  
 
'MsgBox (NameFile)
NameFile = "E:\VSS\IN\inctf01." + Mid("000", 1, 3 - ExtLn) + NameFile
DoCmd.TransferText acImportFixed, "ImpVSS", "VSS_IN", NameFile, False
(эту строчку дебагер выделяет)
 
Что это? (на всякий файлово папочная структура одинаковая)


----------

В чем сила Брат?
----------

Всего записей: 941 | Зарегистр. 16-09-2004 | Отправлено: 09:56 06-05-2006 | Исправлено: Portfel, 10:03 06-05-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Access VBA


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru