Страницы: Пред. 1 2 3 4 5 6 7 8 9 След.
RSS
Excel и Access могут облегчить друг другу жизнь?, как можно совмещать их способности
 
Цитата
JeyCi написал: - Delete(AffectRecords)... если когда-нибудь придётся допиливать - обязательно выложу итог    "творческой мысли" ...
всё-таки итог творческой мысли приводит к 1 выводу (бд создаётся не для того, чтобы её удалять, а для хранения важной инфо и её структурирования, для того бд и создают, чтобы хранить инфо и сильно не увлекаться удалением) и 2 возможностям:
1) добавить в базу поле Архив - где помечать архивные записи - и удалять по мере (не)надобности
2) скидывать в отдельную таблицу архивные записи (что получается немного более громоздко) и лишь избавляет от необходимости при обращении к базе в дальнейшем ставить проверку WHERE NOT archive... кому как удобно...
вариант 1 - простой
вариант 2 - вставила sql-запрос на обновление, запрос на удаление... после чего :sceptic: закрыла рекордсет и открыла его обновлённым... без пустого поля... что-то RS.Delete не очень проходил, как хочется, - пустота оставалась - поэтому использовала такой ход конём  8)
p.s. итог мысли выкладываю, как обещала давно (адаптировано на примере из #1 этой ветки)  
P.P.S.
на кибере мысля #6 в ветке: Как переместить запись из одной таблицы в другую нажатием кнопки
Цитата
boby104 написал: Перегонять данные в другую (архивную) таблицу имеет смысл, когда нужно  фиксировать все изменения записи в разрезе дат и пользователей
хотя, насколько можно заметить на том же кибере1 (ветка: Перенести данные из одной таблицы в другую ), создание ещё одной таблицы - это своего рода может быть денормализация?.. и она должна быть обоснована!... но с другой стороны - это напоминает просто распределённую БД - главное неизбыточность и оптимально задать ключевые поля!... пример Проектирования БД (на том же кибере2) - ветка: Проектирование БД
Изменено: JeyCi - 13.10.2016 10:11:59
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
по RS.Update в примере #1 в принципе реализовано...
но есть ещё пример в ветке Access - Excell-Access - здесь #7 "основная часть кода"  - смотреть есть ли такая запись в базе Access, и если нет, то добавлять, а если есть то обновлять - (для: из Excel'я передать в Access) - везде всё то же...
только RS.Sort у меня затребовал .CursorLocation=3, aka adUserClient... что и выставила после удаления в новом рекордсете (для простоты попадания на последнюю запись в rs для её отображения в полях листа после удаления текущей)...
- других нюансов для адаптации не обнаружено в работе кода из #1 ( #121)
p.s. все основы, как всегда здесь ADO
Изменено: JeyCi - 13.10.2016 10:17:21
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
несколько примеров Классов для работы с бд через ADO:
1) https://github.com/nervgh/ADO - автор nervgh
2) Class Module to wrap up classic ADO call to SQL-server
3) Доступ к данным SQL-server
p.s. просто код Доступ к данным Excel через ADO
 
Изменено: JeyCi - 17.10.2016 16:49:02
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
и простенький код OLEDB для получения QueryTable - ExecuteSQL:
Код
Sub ExecuteSQL()
'http://analystcave.com/create-microsoft-query-excel-excel-query/
    Attribute ExecuteSQL.VB_ProcData.VB_Invoke_Func = "S\n14"
    'AnalystCave.com
    On Error GoTo ErrorHandl
    Dim SQL As String, sConn As String, qt As QueryTable
    SQL = InputBox("Provide your SQL Query", "Run SQL Query")
    If SQL = vbNullString Then Exit Sub
    sConn = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;;Password=;User ID=Admin;Data Source=" & _
        ThisWorkbook.Path & "/" & ThisWorkbook.Name & ";" & _
        "Mode=Share Deny Write;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
    Set qt = ActiveCell.Worksheet.QueryTables.Add(Connection:=sConn, Destination:=ActiveCell)
    With qt
        .CommandType = xlCmdSql
        .CommandText = SQL
        .Name = Int((1000000000 - 1 + 1) * Rnd + 1)
        .RefreshStyle = xlOverwriteCells
        .Refresh BackgroundQuery:=False
    End With
    Exit Sub
ErrorHandl: MsgBox "Error: " & Err.Description: Err.Clear
End Sub
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Подключение к разным БД Access с помощью одной процедуры
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 

добавление в БД Access из Excel новых

суть такова

ИЛИ
#19 здесь CompareUpdateRecords

Изменено: JeyCi - 01.04.2017 14:02:23
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Удаление из таблицы Excel на основе выбранного в UserForm - пост от 14 апр 15, 03:29  от anvg
... с Удалением, конечно, очень сильно поколдовать приходится...
удалять средствами ADO в самой access как-то полегче через Delete...
а в excel  как-то нельзя ... но по линку в #14 есть ещё один ход конём
но исключения лучше отбирать Join'ом (там в #14)

p.s.
и краткая суть -почему удалять не просто
Изменено: JeyCi - 01.04.2017 20:11:27
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал: ... с Удалением, конечно, очень сильно поколдовать приходится...
кратенько 3 варианта возможностей ADO Delete в excel
(т.е. обходные манёвры невозможности использовать команду DELETE напямую):
1) с учётом листа "исключения" - на основе макроса выше
2) с учётом столбца "check" - где выставить отметки о ненадобности строк - выгрузка в столбец K (но манёвром из (1) можно прикрутить и на прежнее место)
3) идея от от anvg  - упрощена для использования на листе (по значениям контрольного столбца)
по сути:
3 модуля
Изменено: JeyCi - 02.04.2017 11:52:47
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Error - База данных или объект доступен только для чтения - Ошибка 2147217911
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
списать по FIFO/LIFO или вручную - возможно ли ?  - параметрический запрос с параметром [СПИСАТЬ]
силами JetSQL
Код
'Составляется запрос с нарастающим итогом, 
'из которого вычитается введенное значение списываемого количества - 
'и таким образом получаем убывающий объем, который анализируем на исчерпывание:
'Списание1:
SELECT P.IdПрихода, P.количество, P.цена, P.progress, 
P.количество-(P.progress-[СПИСАТЬ]) AS regress, 
IIf([СПИСАТЬ]>P.progress,P.количество,IIf(regress<0,0,regress)) AS списано, 
P.количество - списано AS остаток
FROM (SELECT IdПрихода, Количество, Цена, (SELECT SUM(Количество) 
FROM Остатки S WHERE S.IdПрихода<=O.IdПрихода) AS progress FROM Остатки O) AS P;
там же вопрос (29 авг 07, 15:05)
Цитата
Ведь запросы с накоплением ,по всей вилимости, для каждой записи выборки повторяют суммирование с начала, что приводит к 10 и более кратному увеличению затрат времени на их реализацию по сравнению с позаписным подходом.А нельзя как-то исхитриться хотя бы не считать для всей таблицы Остатки накопления, а только до т.п.пока накапливаемая сумма Progress не превысит заданное СПИСАНИЕ
и там же ответ (29 авг 07, 16:28) от Karfaqen
Цитата
в такой категории задач, решение с помощью VBA (скажем, через временную таблицу), будет иметь преимущество по скорости выполнения - именно в силу того, что там возможно более ухищренное исключение из обработки лишних массивов данных.
P.S.
вариантов для PostgreSQL побольше в сети встречается
FiFO with  SQL
Calculating Stock with FIFO Method in SQL
Изменено: JeyCi - 25.06.2017 13:49:53
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
много интересных примеров Запросов на Кибере
Изменено: JeyCi - 17.07.2017 08:30:24
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
встретилась там и ветка "Создание запроса чтобы получился остаток - MS Access" - и решение с обращением к доп. запросам... удалила лишнее из того файла-примера (оставив лишь запросы для сверки) и выложу свой вариант Запроса для вывода Остатков - одним махом [только из таблиц!] - ACCOUNT_ОСТАТКИ
Код
// Справочник-Приход-Расход
// MY ACCOUNT_Остатки (количество в шт.)

SELECT  TT.[Код товара], TT.Артикул,TT.[Наименование товара], 
IIF(ISNULL(TT.СуммаПрихода),0,TT.СуммаПрихода) AS СуммаПрихода, IIF(ISNULL(TTT.СуммаРасхода),0,TTT.СуммаРасхода)  AS СуммаРасхода 
FROM 
(SELECT SSP.* FROM 
(
SELECT [Справочник товара].[Код товара], [Справочник товара].Артикул, [Справочник товара].[Наименование товара], СуммаПрихода 
FROM [Справочник товара] 
LEFT JOIN 
(
SELECT ПРИХОД.[Код товара], ПРИХОД.[Наименование товара], ПРИХОД.[Артикул], SUM(IIF(ISNULL(ПРИХОД.[Кол-во]),0,ПРИХОД.[Кол-во])) AS СуммаПрихода
FROM ПРИХОД
GROUP BY ПРИХОД.[Код товара], ПРИХОД.Артикул, ПРИХОД.[Наименование товара]
) SP
ON [Справочник товара].[Код товара]=SP.[Код товара]
) SSP) TT
LEFT JOIN 
(
SELECT РАСХОД.[Код товара], РАСХОД.[Наименование товара], РАСХОД.[Артикул], SUM(IIF(ISNULL(РАСХОД.[Кол-во]),0,РАСХОД.[Кол-во])) AS СуммаРасхода
FROM  РАСХОД
GROUP BY  РАСХОД.[Код товара],  РАСХОД.Артикул,  РАСХОД.[Наименование товара]
) TTT
ON TT.[Код товара]=TTT.[Код товара]
Изменено: JeyCi - 19.07.2017 10:48:56
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 

QueryManager - ещё один удобный Add-in для XL - для написания SQL-запросов в т.ч. параметрических

Цитата

It eases the editing of queries and Pivottable connections. One can:
1. Edit the SQL string and the connect string of queries and PivotCaches
2. Add parameters
3. Change the path to the data source

All in a single dialog.

Изменено: JeyCi - 13.08.2017 09:31:40
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
на всякий случай - Cummulative col
id - primary key (unique)
id2 - foreign key
Код
SELECT t.id, t.id2, sum(q.СУММ_прихода) AS Cummulative
FROM TBL AS t INNER JOIN TBL AS q ON (t.id2=q.id2) AND (t.id>=q.id)
GROUP BY t.id2, t.id
ORDER BY t.id, t.id2;
p.s.
кстати на Server'e FIFO-счёт можно реализовать через SUM... OVER... - см. окна
Изменено: JeyCi - 03.05.2019 16:23:56
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
(из XL бд не сделать, но воспользоваться преимуществами структурирования инфо по принципу бд можно)
Ликбез для сравнения с построением полноценной БД -
оставляли планетяне в своё время интересные линки именно по БД -
познакомиться с теорией дизайна баз данных #6
Скрытый текст

Physical Database Design - The database professional's guide to exploiting indexes, views, storage, and more
и в этой ветке был линк на сравнительный анализ Contrasting OLTP and Data Warehousing
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Добрый день!
Немножко не в тему разговора, но, может кто поможет!!!
удалено
 
Цитата
Ves написал: Немножко не в тему разговора, но, может кто поможет!!!
см. Правила Форума
удалено
Изменено: JeyCi - 07.03.2019 09:16:46
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
способ грузить в Access из PowerQuery - здесь - но проверка на отсутствие дублей Join'om не проводилась,
при update (с проверкой через Join) может возникнуть проблема о "невозможности изменений в Связанной таблице" - тоже не проверялось из PQ, но встречалась такая проблема из ADODB SQL-запроса к базе...  
Изменено: JeyCi - 07.03.2019 09:25:45
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
встретилась проблема отсутствия ОКРУГЛТ() в Access, в отличие от Excel (в котором есть эта функция)...
как можно обойтись БЕЗ Excel ???
(файлы прилагаются)
p.s.
просто потом хочется брать из Access на выгрузку (в TXT) даже просто vbs-скриптом (с SQL-запрсом) - не хотелось бы подряжать для этого дела Excel... может у кого есть идея, как алгоритмически (или лучше кодом) реализовать такое Округление в макросе Access для выгрузки ИЛИ в коде vbs-скрипта для выгрузки ??? (раз уж нельзя ? в самом Access его функциями ?)
заранее спасибо!
p.s.
и предупредите please кто знает - как с таким Округлением обходятся на MS SQL Server Express - может там нет такой проблемы - просто для инфо  8) ... хотя интересует прежде всего Access 2010
Изменено: JeyCi - 07.03.2019 09:54:38
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, http://access-excel.tips/excel-access-mround-custom/
По вопросам из тем форума, личку не читаю.
 
БМВ спасибо за этот подарок мне к завтрашнему празднику  :)
(данные кстати вроде были на день, предыдущий к вАшему прошЕдшему празднику)
p.s.
вопрос такого же встроенными средствами MS SQL Server Express остаётся -- если кто в курсе??... иначе и там придётся искать альтернативу (если кому-то сервер покажется более удобным, чем Access) ... я пока не могу найти серьёзного повода для перехода с Access на сервер... (по своим объёмам)...
p.p.s. Трудности округления в MS SQL Server
Изменено: JeyCi - 07.03.2019 11:46:47
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал:
MS SQL Server Express остаётся
а в чем проблема вычисляемо поле сделать по вышеуказанному алгоритму IIF функция есть далее дело техники. Думаю можно выбросить проверку на знак, для вашего конкретного случая, для простоты.
=INT(Number/Multiple)*Multiple+IF(Number/Multiple-INT(Number/Multiple)<0,5;0;Multiple)
Ну только заменить IF на IIF ,ну и поля нужные
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
=INT(Number/Multiple)*Multiple+IF(Number/Multiple-INT(Number/Multiple)<0,5;0;Multiple)
Ну только заменить IF на IIF ,ну и поля нужные
БМВ super! даже без VBA - работает вычисляемо поле в Access... thanks a lot!!
Изменено: JeyCi - 07.03.2019 13:18:19
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, Always welcome!
По вопросам из тем форума, личку не читаю.
 
Цитата
Михаил Лебедев написал:
Нет макрорекордера. Как в ексель и ворд.
Ну, про макрорекордер Ворда, не позволяющий элементарно изменить Selection, можно говорить исключительно матом...
 
Цитата
StoTisteg написал:
Selection
Word ковырял мало, но и по малому опыту - на кой использовать Selection? Он, как и в Excel, в 99% случаев не нужен.
 
Цитата
Андрей VG написал:
Он, как и в Excel, в 99% случаев не нужен
Андрей, и да и нет , вот например тут как без него
По вопросам из тем форума, личку не читаю.
 
Цитата
Андрей VG написал:
Он, как и в Excel, в 99% случаев не нужен
Ой не скажи...
Неоднократно пытался избавиться. Не получатся... Доходил вплоть до Selection(1).Select.
 
Цитата
БМВ написал:
как без него
как раз тот 1% задач
Цитата

пользователь ставит курсов в какой либо столбец
так же как в Excel в выделенном пользователем диапазоне сделать то и это.
Изменено: Андрей VG - 07.03.2019 17:21:47
 
Off
Андрей VG, Андрей, там даже в документации многое от selection строится
По вопросам из тем форума, личку не читаю.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 След.
Наверх