Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Я попробовал в окно создания вьюхи вставить весь запрос в результате облом. Это я встудии делал. А вьюхи да можно юзать.
5 окт 12, 23:08    [13276821]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

МОЖНО использовать VBS скрипты. Это я точно знаю . Вот одитн из них которых уже в проге.
'Данный код предназначен для выгрузки счетов в 1С через обработку. Единственный и обязательный параметр - ID экспортируемого счета
'Скрипт работает совместно с файлом ExportTo1c.ert, который должен находится в корневом каталоге необходимой конфигурации 1С.
'® Простой софт
'
'ВНИМАНИЕ: В коде обработки прописан полный путь к базе, задаваемый инсталятором по умолчанию.
'Если Вы переместили или переименовали рабочую базу - необходимо скорректировать путь в коде обработки.
'Обработка тестировалась на релизе 1С:Бухгалтерия 7.70.504. Для других конфигураций может потребоваться модификация обработки,
'для чего в коде обработки есть все необходимые комментарии.
'
'Принцип работы обработки:
'1.  Обработка получает параметром формы ID счета из "Учета клиентов".
'2.  По запросу к базе УК получает необходимые в 1С реквизиты клиента и счета.
'3.  Находит\создает в 1С необходимый элемент Справочника.Контрагенты,
'4.  Находит\создает в 1С необходимый элемент Справочника.Номенклатура.
'5.  Создает, заполняет и сохраняет Докуент.Счет на указанную дату.
'5.1 Так как нумерация счетов своя - импортированные счета имеют префикс УК.
'6   Дописывает в комментарий номер счета 1С (поле tblInvoices.Notes)
'6.1 При необходимости в таблице tblInvoices можно созать отдельное поле "Номер в 1С".
'    Номер документов в 1С - обычно поле char(10), но лучше уточнить в конфигураторе
'    и отредактировать процедуру ОбновитьСчетУчетаКлиентов()

Const BASE1C = "c:\1c\1sbdb" 'полный путь к базе 1С, в которую производится экспорт счетов - ЗАДАЙТЕ ПРАВИЛЬНЫЙ ПУТЬ!
Const ERTNAME = "ExportTo1c.ert" 'имя файла ERT с обработкой импорта
Dim sBase1C     'полный путь к базе 1С, в которую производится экспорт счетов
Dim objArgs	'объект для работы с параметрами командной строки вызова
Dim iInvoiceID	'ID импортируемого счета
Dim objV7	'OLE объект системы "1С:Предприятие"
Dim sUser1c	'имя пользователя 1С. Дожен быть пустым, есть в 1С не используются пользователи
Dim sPass1c	'пароль пользователя 1С. Должен быть пустым, если в 1С не используются пользователи
Dim sExec1c	'строка для формирования команд 1С
Dim iRes	'код ошибки, при обращении к 1С

sBase1C = BASE1C
sBase1C = InputBox("Введите полный путь к базе данных 1С, в которую будет производиться экспорт счетов", "Путь к базе 1С", sBase1C)

If sBase1C > "" Then
  Set objArgs = WScript.Arguments 'получение объекта для чтения параметров строки запуска файла

  If objArgs.Count = 0 Then 'не передан параметр
    MsgBox "Обязательный параметр ID экспортируемого счета не был передан в файл-скрипт." & vbCr _
    & "Задайте правильно команду для данной кнопки в настройках панели инструментов." & vbCr _
    & "Пример команды вызова файла-скрипта: ExportTo1c.vbs /[ID]", vbExclamation, "Отсутствует параметр"
  Else '> 0 - параметр был передан
    'получаем ID экспортиремого счета из строки параметра запуска
    'например, вызов данного файла был такой C:\ExportTo1c.vbs /1 или такой C:\ExportTo1c.vbs /[ID]

    iInvoiceID = Right(objArgs(0), Len(objArgs(0)) - 1) 'получаем, например, 1

    'при настройке импорта необходимо указать параметры базы 1С:
    sUser1c = "" ' имя пользователя (должно быть пустым, если пользователи не используются)
    sPass1c = "" ' пароль (должно быть пустым, если пользователи не используются)

    'собираем строку запуска и инициализируем 1С
    sExec1c = "/D" & sBase1C
    If sUser1c > "" Then sExec1c = sExec1c + " /N" + sUser1c
    If sPass1c > "" Then sExec1c = sExec1c + " /P" + sPass1c
    Set objV7 = CreateObject("V77.Application") 'запуск OLE объекта 1C
    iRes = objV7.Initialize(objV7.RMTrade, sExec1c, "NO_SPLASH_SHOW") 'загрузка конфигурации

    'строка передачи в 1С - открытие формы обработки и передача ей параметром ID нужного счета
    sExec1c = "ОткрытьФормуМодально(""Отчет"", " & iInvoiceID & ", """ & sBase1C & "\" & ERTNAME & """)"
    objV7.ExecuteBatch sExec1c 'Вызов обработки импорта
  End If
End If
5 окт 12, 23:10    [13276828]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

МОЖНО использовать VBS скрипты. Это я точно знаю . Вот одитн из них которых уже в проге.

вбс тут офтопик,
не наду сюда эту херь постить
понадобится - в форум VB с этим иди

-------
попробуй в студии это выполнить
select null as Товар, [1], [2], [3]
from
(select distinct left(convert(varchar, OrderDateCalc, 120), 10) as OrderDateCalc, row_number() over(order by OrderDateCalc desc) as xz
from qdfOrdersProducts) a
pivot (max(OrderDateCalc) for xz in ([1], [2], [3])) pvt

union all

select Товар, [1], [2], [3]
from
(select qdfOrdersProducts.ProductCalc as Товар, cast(SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as varchar) as Доход, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Доход) for xz in ([1], [2], [3])) pvt

order by 1


и что это за дата в строках заказа - qdfOrdersProducts.OrderDateCalc ?
в qdfOrders, что нет даты заказа ?
5 окт 12, 23:31    [13276890]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
fix
qwerty112
select null as Товар, [1], [2], [3]
from
(select left(convert(varchar, OrderDateCalc, 120), 10) as OrderDateCalc, dense_rank() over(order by OrderDateCalc desc) as xz
from qdfOrdersProducts) a
pivot (max(OrderDateCalc) for xz in ([1], [2], [3])) pvt

union all

select Товар, [1], [2], [3]
from
(select qdfOrdersProducts.ProductCalc as Товар, cast(SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as varchar) as Доход, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Доход) for xz in ([1], [2], [3])) pvt

order by 1

5 окт 12, 23:33    [13276896]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

qdfOrdersProducts.OrderDateCalc это дата из ордерс
вот код вьюшки что бы всё стало ясно.
SELECT dbo.tblOrdersProducts.ID, dbo.tblOrdersProducts.Ordinal, dbo.tblOrdersProducts.ProductID, dbo.tblOrdersProducts.Quantity, dbo.tblOrdersProducts.SalePrice,
dbo.tblOrdersProducts.Amount, dbo.tblOrdersProducts.AddTime, dbo.tblOrdersProducts.OrderID, dbo.tblMain.ProductCode AS ProductCodeCalc,
dbo.tblMain.Product AS ProductCalc, dbo.tblMain.ProductGroup AS ProductGroupCalc, dbo.tblMain.ProductType AS ProductTypeCalc,
dbo.tblOrders.StoreID AS StoreIDCalc, dbo.tblOrders.OrderDate AS OrderDateCalc, dbo.tblOrders.OrderStatus AS OrderStatusCalc
FROM dbo.tblOrdersProducts LEFT OUTER JOIN
dbo.tblOrders ON dbo.tblOrdersProducts.OrderID = dbo.tblOrders.ID LEFT OUTER JOIN
dbo.tblMain ON dbo.tblOrdersProducts.ProductID = dbo.tblMain.ID

вот результат выполнения того что ты дал
Товар 1 2 3
NULL 2012-10-05 2012-10-03 NULL
Очки ЗП-12 без войлока 5.5 NULL NULL
Очки откидные круглые Китай 24.631 99.508 NULL
Очки откидные прямоугольные Китай 29.508 NULL NULL

Кстати ОЧЕНЬ круто, что без перемененных всё!!!!
5 окт 12, 23:43    [13276937]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

но я могу растроить, программа не понимает альясы, именно прога а не студия, оно жалуется на
select null as Товар, [1], [2], [3]
from
(select left(convert(varchar, OrderDateCalc, 120), 10) as OrderDateCalc, dense_rank() over(order by OrderDateCalc desc) as xz
[color=red]from qdfOrdersProducts) a[/color]
pivot (max(OrderDateCalc) for xz in ([1], [2], [3])) pvt

union all

select Товар, [1], [2], [3]
from
(select qdfOrdersProducts.ProductCalc as Товар, 
cast(SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as varchar) 
as Доход, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Доход) for xz in ([1], [2], [3])) pvt

order by 1
5 окт 12, 23:51    [13276956]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

http://s019.radikal.ru/i635/1210/17/4ba7a673ce9ct.jpg
5 окт 12, 23:54    [13276966]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

ЧЁРТ простите модеры за флуд
http://s019.radikal.ru/i635/1210/17/4ba7a673ce9c.png
5 окт 12, 23:54    [13276968]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

я подобавлял товары и тепреь результат выглядит так
Товар 1 2 3
NULL 2012-10-11 2012-10-06 2012-10-05
Cтекло Г-2 52/102 мм 4.464 NULL NULL
Очки Provaid не потеющее поликарбонатное стекло Китай NULL 164.704 NULL
Очки ЗП-12 без войлока NULL NULL 5.5
Очки откидные круглые Китай NULL NULL 24.631
Очки откидные прямоугольные Китай NULL NULL 29.508


интересно то что я добавил ещё на 11 число и 3 число ВЫПАЛО отсюда (((((((
6 окт 12, 00:02    [13276984]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
Kimel,

но я могу растроить, программа не понимает альясы, именно прога а не студия, оно жалуется на

это ты будеш растраивать продавцов той проги, - меня не надо

раз в студии выполняется, - то делай на этом запросе вьюху, а из "программе" - её вызывай
только заполни на сколько дней выводить хочеш (выделил)

create view dbo.Haba_Haba
as
select null as Товар, [1], [2], [3], ..., [30]
from
(select left(convert(varchar, OrderDateCalc, 120), 10) as OrderDateCalc, dense_rank() over(order by OrderDateCalc desc) as xz
from qdfOrdersProducts) a
pivot (max(OrderDateCalc) for xz in ([1], [2], [3], ..., [30])) pvt

union all

select Товар, [1], [2], [3], ..., [30]
from
(select qdfOrdersProducts.ProductCalc as Товар, cast(SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as varchar) as Доход, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Доход) for xz in ([1], [2], [3], ..., [30])) pvt

order by 1
6 окт 12, 00:20    [13277031]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

при создании представления вот
http://s42.radikal.ru/i095/1210/2c/17f61ac56d4b.png
6 окт 12, 00:38    [13277071]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Сообщение 102, уровень 15, состояние 1, процедура Haba_Haba, строка 3
Неправильный синтаксис около конструкции ",".
Сообщение 102, уровень 15, состояние 1, процедура Haba_Haba, строка 6
Неправильный синтаксис около конструкции "a".
Сообщение 102, уровень 15, состояние 1, процедура Haba_Haba, строка 11
Неправильный синтаксис около конструкции ",".
Сообщение 102, уровень 15, состояние 1, процедура Haba_Haba, строка 17
Неправильный синтаксис около конструкции "a".
6 окт 12, 00:38    [13277073]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

при создании представления вот
+
Картинка с другого сайта.

ну ты прикалываешся чтоле ?

это
[1], [2], [3], ..., [30]

обозначает, что тебе нужно лапами вписать недостающие номера
[1], [2], [3], [4], [5], [6], и т.д.
6 окт 12, 00:43    [13277087]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

СПасибо, но новая ошибка !!!!
Сообщение 1033, уровень 15, состояние 1, процедура Haba_Haba, строка 20
Предложение ORDER BY не допускается в представлениях, встроенных функциях, производных таблицах, вложенных запросах и обобщенных табличных выражениях, если не указано TOP или FOR XML.
6 окт 12, 00:44    [13277092]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

СПасибо, но новая ошибка !!!!
Сообщение 1033, уровень 15, состояние 1, процедура Haba_Haba, строка 20
Предложение ORDER BY не допускается в представлениях, встроенных функциях, производных таблицах, вложенных запросах и обобщенных табличных выражениях, если не указано TOP или FOR XML.

аа, ну да,
убери эту строку - order by 1
6 окт 12, 00:47    [13277099]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Представление работает, но я не понимаю, во первых как оно будет определять период
6 окт 12, 00:49    [13277113]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

Представление работает, но я не понимаю, во первых как оно будет определять период

13276814
6 окт 12, 00:50    [13277119]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

всё я больше могу, #цензура# это программа, ЦЕЛЫЕ ПОЛ ГОД НАД НЕЙ ТРУЖУСЬ КАЖДЫЙ ДЕНЬ, но я не могу исправить то что разработчик #цензура#. Она не схавала представление, код тоже не хавает. Посоветуй плиз нормальную прогу, тоже такую что бы всё настраивалось, только что бы КОД НОРМАЛЬНО ИСПОЛНЯЛСЯ
6 окт 12, 00:57    [13277140]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

всё я больше могу, #цензура# это программа, ЦЕЛЫЕ ПОЛ ГОД НАД НЕЙ ТРУЖУСЬ КАЖДЫЙ ДЕНЬ, но я не могу исправить то что разработчик #цензура#. Она не схавала представление, код тоже не хавает. Посоветуй плиз нормальную прогу, тоже такую что бы всё настраивалось, только что бы КОД НОРМАЛЬНО ИСПОЛНЯЛСЯ

в смысле ?
что, вызов из программы выборки из вью не работает ?
как вызывал, так ?

select * from  dbo.Haba_Haba

?
и что пишет-то - покажи
6 окт 12, 01:00    [13277152]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

http://s004.radikal.ru/i206/1210/f6/4e95752fbe5d.png
бред выводит
6 окт 12, 01:02    [13277155]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel,

посмотрел тут - 13277087 - у тебя жж там не одна база,
а программа настроенна на ту БД где ты создал вьюху ?
6 окт 12, 01:03    [13277157]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

http://s004.radikal.ru/i206/1210/f6/4e95752fbe5d.png
бред выводит

а как ты вью назвал ?
чё ты вызываеш такое qdfOthet ?
6 окт 12, 01:05    [13277162]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Так в том то и дело что всё правильно, она запросы в которых есть ЧТО-ТО КРОМЕ SELECT FROM WHERE UNION очень плохо хавет, а то и ВООБЩЕ как тут не есть
Я уже устал, я не хочу в этом гавне больше работаь, она очень функциональна, и всё в ней гуд, ВСЁ кроме того что она не есть "СЛОЖНЫЙ КОД"
6 окт 12, 01:05    [13277166]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

Так в том то и дело что всё правильно, она запросы в которых есть ЧТО-ТО КРОМЕ SELECT FROM WHERE UNION очень плохо хавет, а то и ВООБЩЕ как тут не есть
Я уже устал, я не хочу в этом гавне больше работаь, она очень функциональна, и всё в ней гуд, ВСЁ кроме того что она не есть "СЛОЖНЫЙ КОД"

что "всё правильно" ?
что ты вызываеш ?
в вызове вьхи НЕТ сложного кода, он весь спрятан во вью, - ты должен вызвать вью, которое создал, а не что-то другое ...
6 окт 12, 01:08    [13277174]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

смотри. я взял и создал вьюшку через студию . вот код.
use S4LadIcks12
go
create view dbo.qdfOtchet
as
select null as Товар, [1], [2], [3],[30]
from
(select left(convert(varchar, OrderDateCalc, 120), 10) as OrderDateCalc, dense_rank() over(order by OrderDateCalc desc) as xz
from qdfOrdersProducts) a
pivot (max(OrderDateCalc) for xz in ([1], [2], [3], [30])) pvt

union all

select Товар, [1], [2], [3],  [30]
from
(select qdfOrdersProducts.ProductCalc as Товар, cast(SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as varchar) as Доход, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Доход) for xz in ([1], [2], [3],  [30])) pvt
программными средствами тоже можно создать, но она пишет мне вот что Имя поля товар юзать нельзя то шо оно русское. Окей поменял на англ. Теперь пишет Имя поля varchar НЕЛЬЗЯ юзать потому что это зарезервированное слово . Я так и не понял как исправить это. Я думаю нужно создать вьху программным методом исправляя все ошибки
http://s018.radikal.ru/i523/1210/45/79a1b5bd1b48.png
6 окт 12, 01:15    [13277187]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить