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

Поиск сообщений в 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 ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

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

Конфликт записи при копировании заказа

Четверг, 27 Марта 2014 г. 16:59 + в цитатник
Добрый день.
Работаю с ACCES + SQL SERVER 2008.
Есть две таблицы "Учет заказов" с самими заказами и "Строки заказов" с позициями в счете.
Создана форма с подформой, где можно просматривать эти счета.
По кнопке вызываю сохраненную процедуру копирования счета
    With cmd
        .ActiveConnection = CurrentProject.Connection
        .CommandText = "CopyOrder"
        .CommandType = adCmdStoredProc
        
        .Parameters.Append .CreateParameter("@fOrder", adInteger, adParamInput, , Me.ÊîäÇàêàçà)
        .Parameters.Append .CreateParameter("@fOper", adInteger, adParamInput, , Me.Îïåðàòîð)
        .Parameters.Append .CreateParameter("@LastID", adInteger, adParamOutput)
        
        .Execute

        Me.RecordSource = "exec Òîðãîâëÿ_Ñïèñîê_ñ÷åòîâ 'order','" & .Parameters("@LastID") & "'"
        'Debug.Print .Parameters("@LastID")
    End With


Код самой процедуры:
ALTER PROCEDURE [dbo].[CopyOrder]
   @fOrder int, -- код копируемого счета
   @fOper int,   -- код оператора, копирующего счет
   @LastID int OUTPUT
AS
BEGIN

   SET NOCOUNT ON;
   
   -- Вставляем  строку
   INSERT INTO dbo.[Учёт заказов]
			   ([КодКлиента],
				[Дата выписки счёта],
				[Заметки],
				[Оператор],
				[БукваСчёта],
				[ПроцСкидки],
				[КодСклада],
				[СкладОтгрузки],
				[ОтправкаТК],
				[ОтправкаЗаСчет],
				[ОтправкаГород],
				[ОтправкаАдрес],
				[ОтправкаКонтЛицо],
				[ОтправкаТип],
				Примечение,
				КодКонтЛица)
		SELECT	dbo.[Учёт заказов].КодКлиента, 
				CONVERT(datetime, GETDATE(), 102) AS [Дата выписки счёта], 
				dbo.[Учёт заказов].Заметки, 
				Oper.Оператор, 
				Oper.БукваСчета, 
				dbo.[Учёт заказов].ПроцСкидки, 
				dbo.[Учёт заказов].КодСклада, 
				dbo.[Учёт заказов].СкладОтгрузки, 
				dbo.[Учёт заказов].ОтправкаТК, 
				dbo.[Учёт заказов].ОтправкаЗаСчет, 
				dbo.[Учёт заказов].ОтправкаГород, 
				dbo.[Учёт заказов].ОтправкаАдрес, 
				dbo.[Учёт заказов].ОтправкаКонтЛицо, 
				dbo.[Учёт заказов].ОтправкаТип,
				dbo.[Учёт заказов].Примечение,
				dbo.[Учёт заказов].КодКонтЛица
FROM         dbo.[Учёт заказов] CROSS JOIN
                          (SELECT     Оператор, БукваСчета
                            FROM          dbo.Операторы
                            WHERE      (Оператор = @fOper)) AS Oper
WHERE     (dbo.[Учёт заказов].КодЗаказа = @fOrder)
   

   -- Получаем id вставленной строки
   SET @LastID = SCOPE_IDENTITY()
   

 -- вставляем позиции в счете
   INSERT INTO dbo.[Строки заказов] (КодЗаказа, [Код товара], Количество, Скидка, Цена2)
	SELECT @LastID As КодЗаказа , [Строки заказов].[Код товара], Количество, [Коды скидок].[%скидки] As Скидка, 
	CEILING(((ROUND(dbo.[Перечень товаров].ЦенаРозн0 + dbo.[Перечень товаров].[Цена отп ЕВРО] 
	* dbo.Курс.[Курс ЕВРО] + dbo.[Перечень товаров].[Цена отп $] * dbo.Курс.[Курс $], 0)) * 
	(1 - ISNULL([Коды скидок].[%скидки], 0) / 100)) * (1 + ISNULL(dbo.[Строки заказов].Наценка, 0) / 100)) AS Цена2
	FROM dbo.[Строки заказов] 
	INNER JOIN [Перечень товаров] ON [Перечень товаров].[Код товара] = [Строки заказов].[Код товара]
	INNER JOIN [Учёт заказов] ON [Строки заказов].КодЗаказа = [Учёт заказов].КодЗаказа
	INNER JOIN Предприятия ON Предприятия.КодПредприятия = [Учёт заказов].КодКлиента 
	LEFT OUTER JOIN [Коды скидок] ON [Коды скидок].ГруппаСкидок = Предприятия.ГруппаСкидок AND [Коды скидок].Тип=[Перечень товаров].Тип
	CROSS JOIN Курс
	WHERE [Строки заказов].КодЗаказа=@fOrder
	
	UPDATE [Учёт заказов] SET [№счёта]=@LastID WHERE КодЗаказа = @LastID
   
       RETURN @LastID
   
END


Сами строки в таблицу вставляются нормально.
Потом источнику данных формы мы задаем этот уже скопированный заказ. НО когда теперь пытаюсь редактировать его через форму, в момент сохранения выдает ошибку "Конфликта записи: пока вы редактировали эту запись она уже была изменена".
Подскажите, пожалуйста, как это можно исправить? Это в коде где-то ошибка?

http://www.sql.ru/forum/1085355/konflikt-zapisi-pri-kopirovanii-zakaza


Необновляемый запрос (помогите решить при помощи EXIST)

Четверг, 27 Марта 2014 г. 16:19 + в цитатник
у меня пишет необновляемый запрос, вроде данную проблему можно решить несколькими вариантами:
1. In - но очень медленно работает
2. EXISTS - вот с этим у меня напряг

UPDATE name 
SET name.tr
FROM  (SELECT DISTINCT tabl1.idfrm
FROM tabl2 INNER JOIN tabl1 ON tabl2.frm = tabl1.idfrm) as temp 
INNER JOIN name 
ON temp.idfrm = name.resfrm


подскажите как разрулить при помощи EXIST

http://www.sql.ru/forum/1085337/neobnovlyaemyy-zapros-pomogite-reshit-pri-pomoshhi-exist


Исправьте выражение IIf

Четверг, 27 Марта 2014 г. 14:24 + в цитатник
IIf([data cocedierii]="Is Null" ,(Fix((Date()-[Data angajarii])/365)),"Fix(([Data concedierii]-[Data angajarii])/365)))
надо чтобы проверяла если строка пустая тогда подсчет идет по 1 формуле в противном случае другая

http://www.sql.ru/forum/1085299/ispravte-vyrazhenie-iif


Появление лишних строк в Listbox на форме

Четверг, 27 Марта 2014 г. 11:51 + в цитатник
Здравствуйте. В БД на аксесс сделал форму со списком (Listbox), в который вывожу данные из таблицы "Объекты"(ШифрОбъекта - текст, ключевое; Наименование - текст, ГИП - число, внешний ключ; РуководительПО - число, внешний ключ). ГИП и Руководитель ПО - внешние ключи из таблицы сотрудников. Если ГИП и Руководитель ПО не заполнены, то все записи объектов выводятся в список как надо, а если например отредактировать объект - добавить ему ГИПа и руководителя ПО, то этот объект в списке дважды выводится, что не правильно и сбивает с толку... Данные в список выводятся по запросу:
SELECT Объекты.КодОбъекта, Объекты.Наименование, Объекты.НачалоРаботы, Объекты.ОкончаниеРаботы, Объекты.Стадия, Сотрудники.ФамилияИмяОтчество AS ГИП, Сотрудники_1.ФамилияИмяОтчество AS [Руководитель ПО]
FROM Сотрудники AS Сотрудники_1 RIGHT JOIN (Сотрудники RIGHT JOIN Объекты ON Сотрудники.ТабНомер = Объекты.ГИП) ON Сотрудники_1.ТабНомер = Объекты.[Руководитель ПО];

Для добавления/редактирования объектов создал форму , где в поля ввожу все реквизиты. ГИПа и Руководителя ПО выбираю из полей со списками. Сохраняю запись кодом при нажатии на кнопку в форме добавления объекта:
DoCmd.Close acForm, "DobRedObject", acSaveYes
DoEvents
    If CurrentProject.AllForms("Objects").IsLoaded Then
        Forms("Objects").Controls("Список6").Requery
    End If

Список6 - Listbox, в который объекты выводятся и где ошибки возникают... В чем проблема получается? как избежать повторения записей в списке?

http://www.sql.ru/forum/1085248/poyavlenie-lishnih-strok-v-listbox-na-forme


Редактирование данных с отдельной формы

Четверг, 27 Марта 2014 г. 09:24 + в цитатник
Проблема в следующем. Есть форма Сотрудники, на которой поля расположены в ленточной форме. Таким образом при открытие формы отображаются все сотрудники одновременно. Необходимо отредактировать какую-либо запись в отдельном окне. На кнопку Редактировать написала следующий код:

DoCmd.OpenForm "Редактировать сотрудника"
[Forms]![Редактировать сотрудника]![РедПоле1].SetFocus


[Forms]![Редактировать сотрудника]![РедПоле1] = Me.ФИО
[Forms]![Редактировать сотрудника]![Редполе2] = Me.Должность
[Forms]![Редактировать сотрудника]![РедПоле3] = Me.Ставка


При нажатии на кнопку, открывается форма и в ней занесены данные, выделенные на форме Сотрудники. Но при редактировании этих записей, почему то идет изменение первой записи, а не выделенной. Что я делаю не так?

http://www.sql.ru/forum/1085221/redaktirovanie-dannyh-s-otdelnoy-formy


Поле со списком: выбор "кроме уже выбранных"

Среда, 26 Марта 2014 г. 18:52 + в цитатник
Таблица "Рассылки". ID_Р, Name
Таблица "Получатели". ID_П, Name
Таблица "Рассылки4Получатели". ID, ID_Р, ID_П

На главной Форме1 поле со списком ID_Р содержит коды рассылок.
В подчинённой табличной Форме2 с источником данных - "Рассылки4Получатели", в поле со списком указываются получатели конкретной рассылки
Источник поля со списком:
SELECT [Получатели].[ID_П], [Получатели].[Name]
FROM [Получатели]
WHERE ((([Получатели].ID_П) Not In (SELECT [Рассылки4Получатели].[ID_П] FROM [Рассылки4Получатели] WHERE ((([Рассылки4Получатели].[ID_Р])=[Forms]![Форма1]![ID_Р])); )))
ORDER BY [Получатели].[Name];
Проблема: в списке нет ограничения "кроме уже выбранных".
А вот отдельный сохранённый запрос (при открытой Форме1 и сделаном выборе в поле ID_Р выводит данные правильно.

http://www.sql.ru/forum/1085154/pole-so-spiskom-vybor-krome-uzhe-vybrannyh


Формат текста

Среда, 26 Марта 2014 г. 18:44 + в цитатник
Есть поле в запросе
ФИО: [фам]+" " & [имя]+" " & [от]
это поле выводиться в отчете, но нужно чтоб только фамилия - [фам] в этой строке выводилось ЖИРНЫМ, подскажите можно ли дописать это прямо в запросе????

http://www.sql.ru/forum/1085152/format-teksta


Редактирование поля рекордсета в отвязанном контроле

Среда, 26 Марта 2014 г. 17:29 + в цитатник
MDB, Ленточная форма, значение редактируется в контроле, отвязанном от набора записей, и по кнопке записывается в нужное поле ленточной формы, привязанное к набору записей, запись сохраняется.

Если отбросить интерфейсную сторону вопроса и юзабилити, то какие отрицательные последствия такой подход может иметь? Вижу только положительное "Запись не будет блокирована на время редактирования пользователем" и отрицательное "Пока пользователь меняет значение другой пользователь уже его изменил".

Выскажитесь плз.

http://www.sql.ru/forum/1085128/redaktirovanie-polya-rekordseta-v-otvyazannom-kontrole


ADP - обновление одной строки в форме, основанной на SP.

Среда, 26 Марта 2014 г. 16:21 + в цитатник
Как организовать сабж?
Данные в подчиненной форме получаются из SP и обновляются из главной формы.
Написать что-то вроде той же SP, но для нужной строки не проблема. Но как обновить данные только в нужной строке?

http://www.sql.ru/forum/1085107/adp-obnovlenie-odnoy-stroki-v-forme-osnovannoy-na-sp


Итоги в перекрестном запросе

Среда, 26 Марта 2014 г. 09:24 + в цитатник
Здравствуйте. Делал перекрестный запрос в БД на аксесс 2013. Вот текст запроса:
Parameters Forms!PlanChasObject!Поле0 DateTime, Forms!PlanChasObject!Поле2 DateTime;
TRANSFORM SUM(НазначенияСотрудникам.КолЧасовПлан) AS [Sum-КолЧасовПлан]
SELECT Сотрудники.ТабНомер, Сотрудники.ФамилияИмяОтчество
FROM Сотрудники RIGHT JOIN НазначенияСотрудникам ON Сотрудники.ТабНомер = НазначенияСотрудникам.Сотрудник
WHERE НазначенияСотрудникам.ДатаНачала BETWEEN Forms!PlanChasObject!Поле0 AND Forms!PlanChasObject!Поле2
GROUP BY Сотрудники.ТабНомер, Сотрудники.ФамилияИмяОтчество
PIVOT НазначенияСотрудникам.Объект;

Запрос выводит общие трудозатраты сотрудника в часах по каждому из договоров(объект)за период, который задается в полях экранной формы(поле0 и поле2) в виде сводной таблицы. Сотрудники выводятся в строках, объекты - в столбцах. Возникла задача: вывести общую сумму по каждой строке, т.е. сколько часов отработал сотрудник по всем объектам. Можно ли это в запросе сделать? Если можно, то подскажите пожалуйста как... Пока я в Excel эти суммы считаю вручную

http://www.sql.ru/forum/1084995/itogi-v-perekrestnom-zaprose


Доработать базу за определенную плату.

Среда, 26 Марта 2014 г. 06:45 + в цитатник
Нужно в базе данных сделать так, что бы преподаватель не мог вести у двух классов одновременно, и так же что бы несколько преподавателей не оказались в одном классе одновременно. О вознаграждении договоримся.
В архиве "Расписание АРМ" - программа, которую нужно доработать, в архиве "Расписание(пример)" - программа по аналогии с которой нужно сделать. Там (в примере) если выбираешь одно и то же время для одного преподавателя в разных классах на форме РасписаниеГлавная, то вылетает ошибка

http://www.sql.ru/forum/1084992/dorabotat-bazu-za-opredelennuu-platu


Изменить текс системного сообщения

Вторник, 25 Марта 2014 г. 22:10 + в цитатник
В таблице есть обязательные поля для заполнения, есть форма ввода основанная на этой таблице и если обязательные поля не заполнены, то программа выдает системное сообщение о том что поля в такой-то таблице не заполнены, как можно изменить это сообщение на своё?

http://www.sql.ru/forum/1084956/izmenit-teks-sistemnogo-soobshheniya


Отмена изменения в таблице

Вторник, 25 Марта 2014 г. 18:49 + в цитатник
Есть форма с подчиненной формой и кнопками "отмена" и "ок" для редактирования данных таблиц. Если внести изменения в основной форме а затем начать редактировать данный в подчиненной форме то данный которые были внесены в основную форму сразу сохраняются в таблице. Как при помощи кнопки "отмена" организовать отмену всех изменений(вернуть исходные денные) которые производились в основной форме.

http://www.sql.ru/forum/1084924/otmena-izmeneniya-v-tablice


Отказ от курсора в mssql

Вторник, 25 Марта 2014 г. 15:45 + в цитатник
Хотелось бы попытаться отказаться от курсора.
Задача такая:
Есть вьюшка, которая показывает остатки по приходам нужного товара. Надо отобрать в табличной функции или в хранимой процедуре записи из этой вьюшки, на нужное кол-во, начиная со "старых".
Как-то так:
id_ПриходаОстаток
12
25
310
420

Предположим мне надо отобрать приходов на 10 шт., в итоге я должен получить что-то такое:
id_ПриходаОстаток
12
25
33

http://www.sql.ru/forum/1084858/otkaz-ot-kursora-v-mssql


Запрос на распределение записей / MS Access

Вторник, 25 Марта 2014 г. 14:40 + в цитатник
Имеются таблицы Дипломник, Руководитель, Специализация, Специализация диплома, Специализация руководителя.
В таблице Дипломники -поля с Номером дипломника, ФИО, Номером преподавателя.
В таблице руководитель - Номер преподавателя, Предполагаемое кол-во дипломников, руководитель.
Специализация диплома Номер студента пишущего дипломный проект и специализации диплома.
Специализация руководителя Номер преподавателя курирующего дипломный проект и специализации преподавателя.

Нужно распределить студентов по преподавателям таким образом, чтобы число студентов курируемых преподавателем не превышало запланированное число курируемых(если число студентов превышает запланированное число, то распределить между преподавателями, у которых большая часть специализации совпадает со специализациями диплома)

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

Со стороны Форумчан хотелось бы услышать предложения по алгоритму, возможные варианты реализации.

Схема данных в приложениях.

ACCDB с моими наработками ссылкой на ядиске..

http://yadi.sk/d/ahQpe1rOLArgr

Модератор: Тема перенесена из форума "Microsoft Office".

http://www.sql.ru/forum/1084835/zapros-na-raspredelenie-zapisey-ms-access


Запрос на добавление

Вторник, 25 Марта 2014 г. 14:10 + в цитатник
Запуск запроса на добавление приводит к выводу сообщения (прикрепленный файл). После нажатия кнопки Да, добавление так и не происходит. Подскажите, что делать!!!

http://www.sql.ru/forum/1084821/zapros-na-dobavlenie


Кратность времени (начала или длительности) интервалу

Вторник, 25 Марта 2014 г. 11:48 + в цитатник
Расписание могу генерировать по 15 минут, могу по 30 минут. Но если уже есть назначение с началом, кратным не получасу, а 15 минутам - то генерировать по 30 минут нельзя - будут упущения... Как проверить на кратность - туплю что-то...

Set rst1 = CurrentDb.OpenRecordset("Select * from Shed_doc where Дата = " & Format(Me.Дата, "mm-dd-yyyy") & " ", DAO.dbOpenDynaset)

With rst1
Do Until .EOF
If Format(rst1!ВремяНачало, "hh:mm") / #12:15:00 AM# = 2 Or 4 Or 6 Or 6 Then MsgBox ("15 min"): Exit Do
If Format(rst1!ВремяНачало, "mm") = #12:30:00 AM# Then MsgBox ("15 min"): Exit Do
If Format(rst1!ВремяКонец, "mm") = #12:15:00 AM# Then MsgBox ("15 min"): Exit Do
If Format(rst1!ВремяКонец, "mm") = #12:45:00 AM# Then MsgBox ("15 min"): Exit Do
.MoveNext
Loop
.Close
End With
Set rst1 = Nothing

http://www.sql.ru/forum/1084781/kratnost-vremeni-nachala-ili-dlitelnosti-intervalu


Работа с браузером через аксес

Вторник, 25 Марта 2014 г. 02:11 + в цитатник
Здравствуйте!
Подскажите, как средствами аксес, из формы открыть браузер, заполнить форму в браузере нужными данными (форма здесь http://www.russianpost.ru/autotarif/SelautotarifRus.aspx), получить результат (стоимость) в переменную?
Все это сделать в фоновом режиме.
Возможно ли такое?

http://www.sql.ru/forum/1084736/rabota-s-brauzerom-cherez-akses


туплю с полем Сумма на форме

Понедельник, 24 Марта 2014 г. 20:00 + в цитатник
как более корректно выбраться из следующей ситуации:
имею на сиквеле таблицу заказов, заказ формируется из нескольких цен. сумма должна храниться в таблице для последующей обработки. Вся математика считается на форме. И на форме
а) надо сразу видеть итоговую сумму, с чем успешно справляется свободное поле но его в этом случае не привязать к данным в таблице.
б) положить итоговое значение в таблицу в поле итоговая сумма.

подскажите, как решить задачу?

http://www.sql.ru/forum/1084680/tuplu-s-polem-summa-na-forme


Как заполнить ComboBox

Понедельник, 24 Марта 2014 г. 19:28 + в цитатник
Мне надо заполнить ComboBox данными из массива при нажатии кнопки на форме
На событие OnClick кнопки запускается процедура:

Private Sub Command2_Click()
Combo4.RowSourceType = "Value List"
Combo4.AddItem "Male"
End Sub

Но почему то выдает ошибку
Не могу понять что я делаю неправильно

Help me please !

http://www.sql.ru/forum/1084674/kak-zapolnit-combobox



Поиск сообщений в rss_sql_ru_access_programming
Страницы: 353 ... 29 28 [27] 26 25 ..
.. 1 Календарь