-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4

Invalid link!








Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://www.sql.ru/forum/actualtopics.aspx?bid=4.
Данный дневник сформирован из открытого RSS-источника по адресу http://www.sql.ru/forum/actualrss.aspx?id=4, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Запрос к экселю (редактируемый)

Понедельник, 18 Апреля 2016 г. 18:06 + в цитатник
Есть такая фишка - выбрать на листе экселя (средь всяких разнородных заголовков и подписей) кусок правильной таблицы
и обратиться к нему при помощи запроса типа:
SELECT [Лист1$A6:S26].Название, [Лист1$A6:S26].Размер, [Лист1$A6:S26].[001], [Лист1$A6:S26].[002], [Лист1$A6:S26].[003], [Лист1$A6:S26].[004], 
[Лист1$A6:S26].[005], [Лист1$A6:S26].[006], [Лист1$A6:S26].[007], [Лист1$A6:S26].[008], [Лист1$A6:S26].[009], [Лист1$A6:S26].[017], 
[Лист1$A6:S26].[020], [Лист1$A6:S26].[021], [Лист1$A6:S26].[022], [Лист1$A6:S26].[023], [Лист1$A6:S26].[024], [Лист1$A6:S26].[026], 
[Лист1$A6:S26].[Кол-во пачек] FROM [Лист1$A6:S26] IN 'C:\file1.xls'[EXCEL 5.0;];


где А6 это верхний левый угол, S26 это правый нижний угол (кусок-прямоугольник листа) - так читать любо дорого...
но к сожалению такой запрос не редактируемый, можно ли таким же макаром сделать вывод (ну или сделать запрос по другому чтоб был редактируемый)
Заранее спасибо за идеи, ссылки...

http://www.sql.ru/forum/1210473/zapros-k-ekselu-redaktiruemyy


Как создавать автоформирующиеся отчёты?

Понедельник, 18 Апреля 2016 г. 14:19 + в цитатник
Всем доброго дня!
К сожалению, Access знаю лишь на уровне таблиц-запросов-форм-отчётов. Без макросов и других наворотов.
Подскажите пожалуйста:
Вот есть у меня общий список заказов (Изображение №1).
Как навесить на поле номера заказа такую гипперссылку, чтобы кликнув на конкретный номер заказа, скажем 155-1 - автоматически открывался бы подробный отчёт именно по этому заказу (Изображение №2) (При этом, естественно, не делая под каждый заказ свою пару запрос-отчёт)?

http://www.sql.ru/forum/1210442/kak-sozdavat-avtoformiruushhiesya-otchyoty


Лицензия MS Access 2010.

Понедельник, 18 Апреля 2016 г. 10:39 + в цитатник
Встал вопрос покупки A2010. Сейчас в продаже есть только A2016. Говорят, что можно купить А2016, установить А2010 и ввести ключи от 2016. Так ли это? Кто как делает на практике?

http://www.sql.ru/forum/1210395/licenziya-ms-access-2010


Сравнение методов передачи данных в Excel

Понедельник, 18 Апреля 2016 г. 03:42 + в цитатник
Возникла задача передачи набора данных из кода .Net в Excel. Задался вопросом, какие есть способы передачи, не используя ADODB.Recordset. Сделал несколько вариантов, а потом решил уже перебрать все подряд, что пришли в голову.

В итоге собрал тестовый стенд:
- таблица на SQL Server 2008
- приложение на Access 2010

Раньше всегда использовал метод CopyFromRecordset. Потому что быстро и просто. Но так как захотел уйти от ADO, то остановился на массивах и XML. Когда начинал, то была надежда, что массивы если не быстрее, то хотя бы не медленнее CopyFromRecordset. Увы, как выяснилось, это не так. Из двух примененных способов самый быстрый уступает CopyFromRecordset в 2 раза по скорости.

Самый скоростной из использованных способ импорта XML в 6 раз медленней, чем CopyFromRecordset. Хотелось бы пошустрее. Возможно, есть какие-то тонкости, если кто знает – поделитесь. Вообще, xlsx файл сам представлен форматом Office Open XML, но на изучение работы с ним времени пока нет. Если кто-то работал, интересно узнать о впечатлениях.

Из обнаруженного – XML, данные которого представлены атрибутами, а не элементами, обрабатывается Excel-ом в разы быстрее.
Выяснилось, что наиболее близким и сопоставимым по скорости к CopyFromRecordset является ListObject, источник данных которого также ADODB.Recordset.

Таблицу результатов привожу ниже. Если у кого-то есть мысли по теме, поделитесь. Если тема заинтересует, прилагаю скрипт на создание таблицы и само приложение – можно будет дописать код по тем же самым исходным данным для корректного сравнения.

http://www.sql.ru/forum/1210353/sravnenie-metodov-peredachi-dannyh-v-excel


Ввод имени поля вручную

Суббота, 16 Апреля 2016 г. 19:52 + в цитатник
Здравствуйте. Такая проблема - необходимо, чтобы пользователь самостоятельно ввёл какое поле таблицы он хочет изменить. Делаю так, и при выполнении запроса ругается, что поле не обновляемое.

http://www.sql.ru/forum/1210251/vvod-imeni-polya-vruchnuu


Построение запросов

Суббота, 16 Апреля 2016 г. 19:31 + в цитатник
Помогите с построением запросов:

1) Надо починить запрос, чтобы он выбирал и добавлял только новые данные о времени работы (Чтобы не дублировало старые данные)
в модуле csvParser:
strSQLchk = "SELECT SourceData.pid, SourceData.fday, SourceData.ftime, SourceData.punch " & _
"FROM (SELECT atWT.pid, atWT.fDay, atWT.fTime, atWT.punch " & _
"FROM atWT INNER JOIN SourceData ON (atWT.pid = SourceData.pid) AND (atWT.fDay = SourceData.fday) " & _
"WHERE ((SourceData.PID) Is Not Null) " & _
"GROUP BY atWT.pid, atWT.fDay, atWT.fTime, atWT.punch " & _
") as Q2 " & _
"RIGHT JOIN SourceData ON Q2.pid=SourceData.pid " & _
"WHERE ((Q2.fday) <> (SourceData.fday)) " & _
"GROUP BY SourceData.pid, SourceData.fday, SourceData.ftime, SourceData.punch "

Он работает, но не совсем хорошо - если данных по дате нет совсем - то добавляет только новые, но если данные по дате есть - добавляет дубль.

2) Контроль корректности данных при начальном импорте.
Сейчас при импорте данных из цсв работает контроль правильности, группируя данные по дате. Однако, если смена будет начинаться в один день и заканчиватся в другой - это работать не будет.
Реализовано запросом:
strSql = "SELECT SourceData.pid, SourceData.Sname, SourceData.Fname, SourceData.fday " & _
    "FROM SourceData GROUP BY SourceData.pid, SourceData.Sname, SourceData.Fname, SourceData.fday " & _
    "HAVING ((Count(*) Mod 2)=1)"

Как поменять, чтоб работало для смен начинающихся в разные сутки?

http://www.sql.ru/forum/1210249/postroenie-zaprosov


Поведение автофильтра в форме в режиме datasheet

Суббота, 16 Апреля 2016 г. 16:36 + в цитатник
Автофильтр периодически подкидывает неприятные сюрпризы - неожиданно исчезает то возможность сортировать (пункты меню заблокированы), то возможность чекбоксами делать мультивыбор из списка значений поля. Вот, например, здесь нет возможности мультивыбора, хотя рядом в аналогичном поле он есть и записей всего несколько. Форма на базе запроса из нескольких таблиц, есть поля с выпадающими списками. Нет у кого ссылочки на описание поведения этих автофильтров, чтобы понять эту загадочную логику?

http://www.sql.ru/forum/1210230/povedenie-avtofiltra-v-forme-v-rezhime-datasheet


Математическая операция в TRANSFORM

Суббота, 16 Апреля 2016 г. 10:15 + в цитатник
Добрый день, я начал изучать SQL пару дней назад.
Задача: в Access 2013 есть 2 таблицы: Поступления и Выбытия. Нужно посчитать остатки (Поступления-Выбытия).
Обе таблицы содержат поля: ID Товара, ID Склада, кол-во товара.
Есть соответствующие справочники товаров и справочники складов, пока опустим их. Но дело в том, что код не должен меняться при изменении кол-ва складов или товаров.
Я было думал, что круто делать перекрестный запрос, когда у меня строки - сгруппированный ID товара, а столбцы - сгруппированный ID Склада. Так сделать с двумя таблицами а потом их вычесть, математически:

TRANSFORM SUM([Поступления].[Кол-во]) - (SELECT SUM(Выбытия.[Кол-во]) FROM Выбытия WHERE Выбытия.[ID Товара] = Поступления.[ID Товара] AND Выбытия.[ID Категории склада] = Поступления.[ID Категории склада])
SELECT Поступления.[ID Товара]
FROM Поступления
GROUP BY Поступления.[ID Товара],  [Поступления].[ID Категории склада]
PIVOT [Поступления].[ID Категории склада];


Ругается на то, что СУБД не распознает первое упоминание Поступления.[ID Товара]. Я методом тыка пришел к мысли, что в Transform Нельзя засунуть математическую операцию. Я прав и изначально иду в неверном направлении?

Готов все сделать по-другому, если подскажете, в каком направлении идти)

Да, и если мы разберемся с этим вопросом, следующий заключается в том, чтобы рабочая версия этого кода учитывала ситуацию, когда в выбытии нет упоминания товара, который упоминается в поступлениях и, следовательно, есть просто пустая ячейка вместо кол-ва поступившего товара.

Заранее спасибо!

http://www.sql.ru/forum/1210187/matematicheskaya-operaciya-v-transform


Access, Recordset.AddNew записывает счетчик

Пятница, 15 Апреля 2016 г. 23:47 + в цитатник
Помогите справиться с такой проблемой.
В окне Access создана ленточная форма с таблицей (в таблице присутствует поле типа "Счетчик"). При открытии окна, вызывается Recordset.AddNew для того чтобы курсор встал на новую запись (чтобы пользователь сразу смог начать вводить данные, не кликая по новой сточке), чисто для удобства пользователя.

Но в этом случае, при каждом открытии окна (при каждом вызове Recordset.AddNew) увеличивается значение поля "Счетчик", несмотря на то, что никакие данные так и небыли введены вообще, и новая строчка в БД не записывается. А каждая реальная новая запись в таблицу имеет номер ("счетчик") на несколько единиц больше, чем должно было бы быть (1, 3, 7, 10, 12, 15 и т.п.).

Нужно чтобы "счетчик" не насчитывал лишнего. Либо отказаться от Recordset.AddNew взамен другого метода установки курсора на новую запись (пока не нашел других способов), либо как-то исключить запоминание счетчика пока не будут введены какие либо данные в таблицу.

http://www.sql.ru/forum/1210167/access-recordset-addnew-zapisyvaet-schetchik


Как быстрее добавить записи в таблицу

Пятница, 15 Апреля 2016 г. 19:50 + в цитатник
Есть данные (более 300 тысяч строк в виде массива), которые необходимо по одной строке в цикле добавить в таблицу (прилинкованная из MDB или c SQL Server - тоже не знаю что быстрей). Какой из вариантов будет наиболее быстрым:
-DAO AddNew-Upgrade
-запрос на добавление
-ADO и addNew ...

Отзовитесь кто уже сталкивался с таким вопросом, плиз

http://www.sql.ru/forum/1210147/kak-bystree-dobavit-zapisi-v-tablicu


Построение запроса в макросе.

Пятница, 15 Апреля 2016 г. 16:53 + в цитатник
Добрый день

Создаю макрос, выполняемый по обновлению таблицы. Макрос привязан к таблице Log , в которой фиксируется факт списания товара такому-то покупателю и изменяет количество товара в таблице Ostatok, ведущей учет товара на складах . В изменяемой таблице Ostatok три поля: название склада, номенклатура товара и остаток.

Макрос работает, когда надо найти определенный товар в таблице Ostatok, без привязки к складу. Но когда добавляю условие со складом, получаю ошибку, что запрос не может быть выполнен, так как идентификатор sklad не находится.

Может быть дело в том, что данные sklad я пытаюсь получить не сразу из таблицы Log, а из привязанной через связи другой таблицы cо списком покупателей и складов?

http://www.sql.ru/forum/1210120/postroenie-zaprosa-v-makrose


RecordSource запрос не работает

Пятница, 15 Апреля 2016 г. 15:11 + в цитатник
Подскажите на форме есть подчиненная форма. Я для этой подчиненной формы пишу
Me![frmCar].RecordSource = "SELECT name FROM car"
Me![frmCar].Requery

но ничего не срабатывает
мне нужно именно RecordSource, т.к. я буду менять запросы

http://www.sql.ru/forum/1210099/recordsource-zapros-ne-rabotaet


Как привязать файл к локальной сети?

Пятница, 15 Апреля 2016 г. 13:19 + в цитатник
Всем привет!
Смею предположить, что вопрос сформулировал криво, но суть такова, что я хотел бы свою наработку привязать к организации, в которой работаю, чтобы файл работал только в локальной сети этой компании.
Есть идеи как это можно реализовать.

http://www.sql.ru/forum/1210061/kak-privyazat-fayl-k-lokalnoy-seti


Не работает авторизация (MSXML2.XMLHTTP, ADODB.Stream...) под Windows 10 (EDGE)

Пятница, 15 Апреля 2016 г. 12:21 + в цитатник
Доброе время суток,

Недавно обновился с Windows 7 на Windows 10. И теперь перестал подхватываться авторизация.

Следующий код открывает IE и вводит логин и пароль. (Работает нормально и под W7 и W10)
Set ie = ConnectServer_PRODIGY    ' авторизуемся на сервере
ie.Visible = True
Set IEdoc = ie.Document    ' получаем ссылку на документ
While ie.Busy Or (ie.ReadyState <> 4): DoEvents: Wend
ie.Quit: Set ie = Nothing


Далее, так как логин и пароль был только что введен то W7 для себя где-то его каширует и последующий код работает нормально, а под W10 отрабатывает какбудто я не смог авторизоваться:

Start_time = Now
s_login = "*********"
s_password = "*********"
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")

'подключение
oXMLHTTP.Open "POST", "https://PRODIGY.COM/show", False, s_login, s_password

s_st = Format(Text_DR_from.Value, "DD-MM-YYYY")
s_en = Format(Text_DR_to.Value, "DD-MM-YYYY")


s_param = "submit_select=1&msg_status=delivered&st=" + s_st + "&en=" + s_en + "&date_order=0&web_users=1&deleted=0&orderBy=4&orderDesc=0&page=1"
oXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
'oXMLHTTP.setRequestHeader "Authorization", "Basic " + Base64Encode(s_login + ":" + s_password)


'получение файла
oXMLHTTP.Send s_param
'Debug.Print oXMLHTTP.responsetext
Set oADOStream = CreateObject("ADODB.Stream")
oADOStream.Mode = 3 'разрешение на чтение и запись
oADOStream.Type = 1 'тип данных - Binary
oADOStream.Open
oADOStream.Write oXMLHTTP.responseBody
'сохранение (с перезаписью файла при необходимости)

MyPath = CurrentProject.Path + "\!IMPORTED_DATA\04PRODIGY\"
MyName = "bulk_list.csv"

oADOStream.SaveToFile MyPath & MyName, 2

http://www.sql.ru/forum/1210045/ne-rabotaet-avtorizaciya-msxml2-xmlhttp-adodb-stream-pod-windows-10-edge


Помогите построить запрос.

Пятница, 15 Апреля 2016 г. 10:09 + в цитатник
Добрый день, есть таблица с полями: id, area, date, value.
Необходимо построить такой запрос, чтобы он выводил, например за месяц, таблицу со строками всех дат месяца и колонками area (их количество всегда одинаково и равне 3).

Возможно ли такое сделать?

http://www.sql.ru/forum/1210017/pomogite-postroit-zapros


Связи в access

Четверг, 14 Апреля 2016 г. 17:38 + в цитатник
Здравствуйте, подскажите правильно ли составлены связи? База данных продажа пиломатериалов. Если недостаточно правильно, то подскажите как сделать. спасибо

http://www.sql.ru/forum/1209926/svyazi-v-access


работа с Excel из Access

Четверг, 14 Апреля 2016 г. 15:53 + в цитатник
Здравствуйте.
Я выполняю из модуля Access заполнение таблицы в Excel.
Но не знаю, как сохранить изменения в файле, т.е. открываю excel файл, а там пусто, данных нет.
Догадываюсь, что нет в моей процедуре команды на сохранение изменений в файле.
Но не догадываюсь какой командой это сделать.

Помогите пожалуйста.

Sub ww()
Dim db As Database
Dim Rst As Recordset
Dim sFile As String
Dim XL As excel.Application, WB As excel.Workbook, WS As excel.Worksheet, oSel As excel.Range
Dim i As Integer
Dim j As Integer

i = 15
Set db = CurrentDb
Set Rst = db.OpenRecordset("Tabel", dbOpenDynaset) - в этом наборе записи, которые нужно перенести в шаблонный файл excel
'MsgBox Rst.Fields.Count
Set XL = CreateObject("Excel.Application")
ChDir Application.CurrentProject.Path

sFile = XL.GetOpenFilename("Excel,*.xls")
Set WB = XL.Workbooks.Open(sFile)
Set WS = WB.Worksheets("Табель") - это файл, в который нужно перенести записи
Do While Not Rst.EOF -открываю цикл по рекордсету
WS.Cells(i, 1) = i - 14 -заполняю нужные поля
WS.Cells(i, 2) = Rst!Name -заполняю нужные поля
WS.Cells(i, 3) = Rst!Tab1C -заполняю нужные поля
WS.Cells(i, 51) = Rst!Podr -заполняю нужные поля
WS.Cells(i, 41) = Rst!Total -заполняю нужные поля
For j = 1 To Rst.Fields.Count - 4 -заполняю нужные поля
WS.Cells(, 5 + j) = Rst.Fields(j)
Next j

i = i + 1
Rst.MoveNext перехожу к следующий записи
Loop
MsgBox "Готово!" & " " & i - 14

End Sub

http://www.sql.ru/forum/1209910/rabota-s-excel-iz-access


Не могу изменить тип поля в таблице

Четверг, 14 Апреля 2016 г. 11:05 + в цитатник
Есть таблица "Товары"
255 полей
1 поле - МЕМО
1 поле - длинное целое
остальные поля - символьные по 255 символов

У четырёх полей G38, G42, G45, G46 надо изменить тип с символьного на числовой плавающий с двойной точностью

Ни программно
    db.Execute "alter table Товары alter column G38 Double"
ни вручную изменить тип поля не получается. Удалит полк и вставить новое - тоже.
Пишет сообщение об ошибке(3190) "Определено слишком много полей"

Эта ошибка может возникнуть, если:
Превышено максимально допустимое число столбцов в таблице или максимальное число блокировок в одном файле.
Свойство "Индексированное поле" было изменено с Да (Допускаются совпадения) на Да (Совпадения не допускаются),
но при этом в таблице уже содержались повторяющиеся данные.

Поля не индексированы.
И всего полей 255. Даже если убираю несколько - всё рано ни добавить, ни изменить не могу.
Что делать?

Таблица приложена

-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?

http://www.sql.ru/forum/1209852/ne-mogu-izmenit-tip-polya-v-tablice


Ошибка "Overflow", добавление узлов в TreeView если "key" в таблице больше 5 знаков

Четверг, 14 Апреля 2016 г. 08:12 + в цитатник
Столкнулся с проблемой. Не добавляются узлы в TreeView при key и parent =123456. Если 12345 то все отлично. Никак не пойму в чем косяк. Помогите найти.Спасибо.

Option Compare Database
Option Explicit
'добавление узлов в TreeView при открытии (рекурсивная процедура)
Public Function TreeView_Node_Add(obj_TreeVieW As Object, i As Integer, sParentKey As String) As Boolean
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT * FROM TablTree WHERE [Parent] = " & i)
    Do Until rst.EOF
        Call TV_ДобавитьУзел(obj_TreeVieW, "Key" & CStr(rst![Key]), rst("Text"), sParentKey)
'вызываем повторно, каждый раз подставляя текущее значение Кеу на место Parent,
'таким образом "вытягивается" вся цепочка каждой группы.
        Call TreeView_Node_Add(obj_TreeVieW, rst![Key], "Key" & CStr(rst![Key]))
        rst.MoveNext
    Loop
End Function

Option Compare Database
Option Explicit
Public NodeRS As Recordset
Function TV_ДобавитьУзел(var_TreeView As Control, _
                         var_Ключ As Variant, _
                         var_Текст As String, _
                         Optional var_РодительскийКлюч = Null, _
                         Optional var_ОтношениеКРодителю = tvwChild, _
                         Optional var_Recordset As Recordset) As Boolean

Dim boolUseRS As Boolean
Dim ndNode As Object
If Not var_Recordset Is Nothing Then
    boolUseRS = True
Else
    boolUseRS = False
End If

If Nz(var_РодительскийКлюч) = "" Then
          Set ndNode = var_TreeView.Nodes.Add(, var_ОтношениеКРодителю, var_Ключ) ' = var_Текст
Else
          Set ndNode = var_TreeView.Nodes.Add(var_РодительскийКлюч, var_ОтношениеКРодителю, var_Ключ) ' = var_Текст
End If
ndNode.Text = var_Текст
If boolUseRS Then
    var_Recordset.AddNew
    var_Recordset!Key = var_Ключ
    var_Recordset!Text = var_Текст
    var_Recordset.Update
End If
End Function

http://www.sql.ru/forum/1209818/oshibka-overflow-dobavlenie-uzlov-v-treeview-esli-key-v-tablice-bolshe-5-znakov


Кнопка создания записи не очищает поля на вкладке

Среда, 13 Апреля 2016 г. 14:57 + в цитатник
Добрый день

На форме Access 2016 поля расположены на двух вкладках. Созданная штатными средствами кнопка создания новой записи очищает поля на первой вкладке и не влияет на вторую.

Кнопку пересоздавал.

Подскажите, как победить?

http://www.sql.ru/forum/1209722/knopka-sozdaniya-zapisi-ne-ochishhaet-polya-na-vkladke



Поиск сообщений в rss_sql_ru_access_programming
Страницы: 353 ... 203 202 [201] 200 199 ..
.. 1 Календарь