Форум: "Базы";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Вниз
доступ к результатам запроса Найти похожие ветки
← →
777 (2005-07-26 12:43) [40]так не прокатит:
1-ая база MS Access
2-ая база MS SQL Server
Query1:
SELECT
(iif(InStr([F2], "(") > 0, Mid([F2], 1, InStr([F2], "(") - 1), iif(InStr([F2], "/") > 0, Mid([F2], 1, InStr([F2], "/") - 1), iif(InStr([F2], ",") > 0, Mid([F2], 1, InStr([F2], ",") - 1), [F2])))) AS Name,
(iif(InStr([F2], "(") > 0, Mid([F2], InStr([F2], "(")), iif(InStr([F2], "/") > 0, Mid([F2], InStr([F2], "/")), iif(InStr([F2], ",") > 0, Mid([F2], InStr([F2], ",") + 1), Null)))) AS Characteristics,
F14 AS Price,
F6 AS Presence,
"1-" + F1 AS Code
FROM Лист1
WHERE ((Лист1.F9) <> "") AND ((Лист1.F2) <> "Наименование товаров")
UNION ALL
SELECT
(iif(InStr([F5], "(") > 0, Mid([F5], 1, InStr([F5], "(") - 1), iif(InStr([F5], "/") > 0, Mid([F5], 1, InStr([F5], "/") - 1), iif(InStr([F5], "<") > 0, Mid([F5], 1, InStr([F5], "<") - 1), iif(InStr([F5], "[") > 0, Mid([F5], 1, InStr([F5], "[") - 1), iif(InStr([F5], ",") > 0, Mid([F5], 1, InStr([F5], ",") - 1), [F5])))))) AS Name,
(iif(InStr([F5], "(") > 0, [F6] + Mid([F5], InStr([F5], "(")), iif(InStr([F5], "/") > 0, [F6] + Mid([F5], InStr([F5], "/")), iif(InStr([F5], "<") > 0, [F6] + Mid([F5], InStr([F5], "<"), InStr([F5], ">")), iif(InStr([F5], "[") > 0, [F6] + Mid([F5], InStr([F5], "[")), iif(InStr([F5], ",") > 0, Mid([F5], InStr([F5], ",") + 1), [F6])))))) AS Characteristics,
F9 AS Price,
F10 AS Presence,
"2-" + Trim(Str(F14)) AS Code
FROM In_a
WHERE (((In_a.F14) <> 0) AND ((In_a.F1) <> "Категория"))
многие функции, которые стандартные для аксес, не знакомы SQL Server, поэтому этот запрос будет для него... синтаксически неверен
← →
Fay © (2005-07-26 12:45) [41]2 msguns © (26.07.05 12:40) [39]
>> Так не корректно
Лишние поля как раз не волнуют (в отличие от сортировок и параметров).
Я привёл частное решение, и оно вполне корректное в частном случае.
Автор уже читает какой-то букварь, так что не вижу необходимости в расширенной образовательной пограмме с рассмотрением разных ситуаций.
← →
Fay © (2005-07-26 12:53) [42]2 Fay © (26.07.05 12:45) [41]
Тогда запрос с параметрами. Адназначна!
← →
ANB © (2005-07-26 12:59) [43]
> 753 (26.07.05 12:27) [35]
А в запросе что ?
← →
Ega23 © (2005-07-26 13:06) [44]2 777 (26.07.05 12:43) [40]
Какой ужас....
← →
777 (2005-07-26 13:14) [45]в запросе извлекаются данные из листов Excel, которые связанными таблицами вставляются в Access (это для Ega23, ANB)
← →
Ega23 © (2005-07-26 13:15) [46]2 777 (26.07.05 13:14) [45]
Это я понял. просто ужасно это всё...
← →
753 (2005-07-26 13:18) [47]да вот, а вы мне еще комплиментов отвешали кучу целую. ну это не к теме уже. короче, делаю сейчас всё, как начал: [0]
← →
msguns © (2005-07-26 13:31) [48]>777 (26.07.05 13:14) [45]
>в запросе извлекаются данные из листов Excel, которые связанными таблицами вставляются в Access (это для Ega23, ANB)
Повыбвав бы ! А просто макрос в екселе или модуль в ацессе нельзя было написать, авжеш ? Вот обязательно как забить гвоздь, так обязательно микроскопом !
← →
Fay © (2005-07-26 13:33) [49]2 msguns © (26.07.05 13:31) [48]
А макросе не придётся публиковать логин/пароль?
← →
Ega23 © (2005-07-26 13:36) [50]2 msguns © (26.07.05 13:31) [48]
Повыбвав бы ! А просто макрос в екселе или модуль в ацессе нельзя было написать, авжеш ? Вот обязательно как забить гвоздь, так обязательно микроскопом !
Причём через жопу.
← →
Lexer © (2005-07-26 13:41) [51]>[49] Fay © (26.07.05 13:33) [49]
>А макросе не придётся публиковать логин/пароль?
Всё решается установкой пароля на проект в книге Excel
← →
ANB © (2005-07-26 13:57) [52]Ну, для совсем разнородных средств такой подход (через клиента на Delphi), наверное, самый простой. Я переносил данные из оракла в мс скуль и тоже так делал.
Автору : запубликуй ТЗ, подкину пример кода.
(фиксировано ли количество полей в запросе - источнике, одинаковый ли тип данных в одном поле)
← →
753 (2005-07-26 14:10) [53]Лучше подкиньте хорошую инфу на нормальном языке (в смысле попроще) по запросам с параметрами
← →
Fay © (2005-07-26 14:12) [54]1) F1 рулит.
The following code runs an insert query to add a record for Liechtenstein into the country table.
Query2.SQL.Clear;
Query2.SQL.Add("INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION)");
Query2.SQL.Add("VALUES (:Name, :Capital, :Population)");
Query2.Params[0].AsString := "Liechtenstein";
Query2.Params[1].AsString := "Vaduz";
Query2.Params[2].AsInteger := 420000;
Query2.ExecSQL;
2) Нужно купить другой букварь
← →
753 (2005-07-26 14:14) [55]ТЗ:
конечная цель - актуальные цены на сайте, которые берутся из БД на SQL Server
1. Получаем прайсы от поставщиков в формате Excel, все разнородные, нам надо получить сводный унифицированный прайс с колонками цена, наличие, наименование товара, характеристики, код поставщика
2. Нам надо сравнить то, что есть в прайсе с нашим прайсом: проставить внутренний для нащей конторы код изделия, нашу цену.
← →
777 (2005-07-26 14:16) [56]Всё делается с целью слежения за ценой: если она в пределах 8-10% (наценка), то всё тип-топ, если нет, то тогда формируется новый приказ о ценах, куда включаются товары, с "плохой" ценой
← →
Ega23 © (2005-07-26 14:17) [57]И ты ЭТО называешь ТЗ??????????????????
← →
777 (2005-07-26 14:18) [58]2 Fay
в ран-тайм query как-то на параметры настраивается? как?
← →
имя (2005-07-26 14:19) [59]Удалено модератором
← →
777 (2005-07-26 14:27) [60]и тишина...
и мертвые с косами стоят...
← →
Lexer © (2005-07-26 14:30) [61]
753 (26.07.05 14:14) [55]
ТЗ:
1. Получаем прайсы от поставщиков в формате Excel, все разнородные, нам надо получить сводный унифицированный прайс с колонками цена, наличие, наименование товара, характеристики, код поставщика
2. Нам надо сравнить то, что есть в прайсе с нашим прайсом: проставить внутренний для нащей конторы код изделия, нашу цену.
Месяц назад, решил эту проблему, могу скинуть, кому надо на мыло. Реализовал всё макросом, прайсы обрабатывает практически любые, надо только в листе настроек для каждого прописать свои настройки.
← →
777 (2005-07-26 14:36) [62]да я тоже решил, но работает всё медленно, пожтому вот переделываю
← →
msguns © (2005-07-26 14:55) [63]>753 (26.07.05 14:14) [55]
>1. Получаем прайсы от поставщиков в формате Excel, все разнородные, нам надо получить сводный унифицированный прайс с колонками цена, наличие, наименование товара, характеристики, код поставщика
2. Нам надо сравнить то, что есть в прайсе с нашим прайсом: проставить внутренний для нащей конторы код изделия, нашу цену.
>777 (26.07.05 14:16) [56]
>Всё делается с целью слежения за ценой: если она в пределах 8-10% (наценка), то всё тип-топ, если нет, то тогда формируется новый приказ о ценах, куда включаются товары, с "плохой" ценой
Чем торгует фирма, танкерами ?
С ширпотребом так не работают. Существует целое море оптовых и не оптовых скидок, варьируемых поставщиком постоянно. Кроме того, поставщик может диктовать выходную цену, объемы реализации, ассортмент. А также может предоставлять отсрочки, кредиты, лизинги и фиг знает чего еще. Помимо этого существует еще разнопроизвоизводители, когда одноименный товар с разными потребительскими качествами делается на разных заводах-фабриках и т.д.
И все это в "сводный унифицированный прайс" ?
← →
msguns © (2005-07-26 14:59) [64]Кстати, а че за петрушка с никами, какой-то семь-восемь-надцать огурец ? Зарегиться амулет не дает ? Или там на шару пол-конторы сбежалось поржать ?
← →
имя (2005-07-26 15:10) [65]Удалено модератором
← →
ANB © (2005-07-26 15:43) [66]Усе понятно, в принципе. Ega23 - не ругайся, я так и просил.
Короче : создаешь таблицу для закачки прайса с фиксированными колонками. Можно заранее, ручками (про временные - сам поищи инфу, не копался), можно через ADOQuery. Если заранее - не забудь из нее все удалить, перед закачкой. Поля заводишь один к одному по порядку, как в запросе источнике.
Дальше делаешь так : (пишу примерно, сам отладишь).
dsSrc и dsInsert : TAADOQuery;
dsInsert.SQL.Text :=
"insert into T_Price (F1, F2, F3) values (:F1, :F2, :F3)";
// Предущую строчку можешь сгенерить на автомате. F1, F2, F3 заменишь на имена своих полей.
dsSrc.Open;
while (not dsSrc.Eof) do begin
for i := 0 to dsSrc.FieldCount - 1 do begin
dsInsert.Params[i].AsString := dsSrc.Fields[i].AsString;
end;
dsInsert.ExecSQL;
dsSrc.Next;
end;
dsSrc.Close;
Ограничение - количество параметров в insert должно строго соответсвовать количеству полей в запросе. И порядок тоже. Если будут вариации - сам допишешь.
← →
msguns © (2005-07-26 15:56) [67]>753 (26.07.05 15:10) [65]
>а это всё так важно, да?! я вообще не завсегдатай зздесь.
А вот я завсегдатай, и большинство учавствующих в этой ветке - тоже. И мы имеем дурную привычку запоминать ники. Чтобы знать, с кем имеем дело в будущем.
ЗЫ. Выйти на улицу чужого города непричесанным или в грязных ботах - это неприлично, а сунутья на форум с ником семь-восемь в порядке вещей.
>>Чем торгует фирма, танкерами ?
>это тоже не имеет отношения к делу. всё уже учтено: все скидки и всё такое
Неужели ? Открою оочень большой секрет: в фармации одна система работы с дилерами и реселлерами, в продуктовке - другая, в стройматериалах - совсем третья и т.д. Но, видимо, программиста это не волнует, т.к. "студент еще"
Одно могу сказать с уверенностью: "сводный" прайс подобный тому, то в "ТЗ" - это галиматья, лишь мешающая менеджерам нормально работать с партнерами и очень скоро твой "шедевр" будут просто игнорировать.
Проверено на практике, и не раз.
Если же хочется сделать нормальную аналитическую программу для реальной помощи руководству, то это дело сложное и перетаскиванием в "базу" намыленных эксель-прайсов не решается.
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.014 c