Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];

Вниз

доступ к результатам запроса   Найти похожие ветки 

 
777   (2005-07-26 10:34) [0]

Проблема следующая. Надо результат запроса к одной из БД записать (а потом дополнить) данными из другой БД. Для этого во второй БД создается таблица. Потом результат запроса к 1-ой базе (ADOQuery1) пытаюсь затолкать во вторую:
ADOQuery1.Open;
for Index := 1 to ADOQuery1.RecordCount do
 begin
   QueryText := QueryText + "INSERT INTO TempTable (ProviderID, Name, Characteristics, ProviderPrice, Presence) VALUES (""" + ADOQuery1.DataSource.DataSet.FieldByName("Code").Value + """, """ + ADOQuery1.DataSource.DataSet.FieldByName("Name").Value + """, """ + ADOQuery1.DataSource.DataSet.FieldByName("Characteristics").Value + """, " + StringReplace(FloatToStr(ADOQuery1.DataSource.DataSet.FieldByName("Price").Value), ",", ".", []) + ", """ + ADOQuery1.DataSource.DataSet.FieldByName("Presence").Value + """) ";
   ADOQuery1.Next
 end;
ADOQuery2.SQL.Text := QueryText;
ADOQuery2.ExecSQL
Так вот проблем возникает на 3-ей строке, когда пытаюсь QueryText присвоить некоторые значение из ADOQuery1. По отладке видно, что DataSource у него Nil. Что делать?
PS однако сам результат запроса в Query1 прекрасно отображается в гриде, если грид настроить на Query1


 
Lexer ©   (2005-07-26 10:37) [1]

А зачем ты обращаешься к ADOQuery1.DataSource, я так понял тебе надо к самому ADOQuery1, тогда так:
ADOQuery1..FieldByName(.....).Value


 
777   (2005-07-26 10:40) [2]

Просто я не знал, что у ADOQuery есть метод FieldByName, т.е. я думал, что он доступен только через DataSourse.DataSet
Спасибо! Сейчас попробую


 
msguns ©   (2005-07-26 11:01) [3]

Св-во DataSet.DataSource служит для связки датасета с главным НД в линковках типа Master-Detail и к сабжу никакого отношения не имеет.

Попутно вопрос:
А зачем так вычурно, нельзя ли во временную таблицу вставлять из ADOQuery1 непосредственно запросом ?
Т.е. заменить SQL в ADOQuery1 с SELECT FROM TABLE1 на
INSERT INTO TEMPTABLE .. SELECT FROM TABLE1

?


 
Ega23 ©   (2005-07-26 11:06) [4]

2 msguns ©   (26.07.05 11:01) [3]
Св-во DataSet.DataSource служит для связки датасета с главным НД в линковках типа Master-Detail и к сабжу никакого отношения не имеет.

Это только одно из применений. Основное - TDataLink.DataSource.DataSet. А потомки TDataLink есть у каждого DB-компонента


 
msguns ©   (2005-07-26 11:06) [5]

Если уж так надо заполнять TEMPTABLE именно в цикле через открытый запрос к 1-й базе (while not Eof do .. Next ..), то зачем добавлять запросами ? Не проще ли добавление делать методами самого датасета, например AppendRecord ?


 
msguns ©   (2005-07-26 11:11) [6]

>Ega23 ©   (26.07.05 11:06) [4]
>Это только одно из применений.
Основное - TDataLink.DataSource.DataSet.

Поясни для особо тупых.

Читаем справку:
Specifies the data source component from which to extract current field values to use in same-name parameters in the ADO query’s SQL statement.

property DataSource: TDataSource;

Description

Set DataSource to automatically fill parameters in a query with fields values from another dataset. Parameters that have the same name as fields in the other dataset are filled with the field values. Parameters with names that are not the same as fields in the other dataset do not automatically get values, and must be programmatically set. For example, if the SQL property of the TADOQuery contains the SQL statement below and the dataset referenced through DataSource has a CustNo field, the value from the current record in that other dataset is used in the CustNo parameter:

SELECT *

FROM Orders O

WHERE (O.CustNo = :CustNo)

DataSource must point to a TDataSource component linked to another dataset component; it cannot point to this query component. The dataset specified in DataSource must be created, populated, and opened before attempting to bind parameters. Parameters are bound by setting the ADO query’s Prepared property to True prior to executing the query. If the SQL statement used by a query does not contain parameters, or all parameters are bound by the application using the Parameters property or the ParamByName method, DataSource need not be assigned. The example below shows setting the DataSource property of ADOQuery2 to the data source for ADOQuery1, preparing ADOQuery2, and activating ADOQuery2:

with ADOQuery2 do begin

 DataSource := DataSource1;
 Prepared := True;
 Open;

end;


В простонародье такая привязка именуется Master-Detail


 
msguns ©   (2005-07-26 11:15) [7]

Приведенная выше справка - из TADOQuery

Теперь читаем о "дедушке" (TDataSet):

Represents the data source of another dataset that supplies values to the dataset.

property DataSource: TDataSource;

Description

As implemented in TDataSet, the DataSource property is always nil.

Descendant dataset classes that support specifying a data source redeclare and implement methods for getting and setting the DataSource property


Ну и где ж тут собачка закопалась ? В смысле связь с [4]


 
Ega23 ©   (2005-07-26 11:17) [8]

Поясню. Откуда, по-твоему, компонент TDBGrid знает про данные? Ведь у него свойство TDataSource, а не TDataSet?

А знает он о данных вот откуда: есть у него "внутре" класс TDataLink, точнее TGridDataLink. У которого есть свойство TDataSource, у которого, в свою очередь, есть свойство TDataSet. И данные для отображения в гриде беруться как раз из этой связки.


 
Ega23 ©   (2005-07-26 11:18) [9]

Ганз, пардон!
Я невнимательно посмотрел. Ты о TDataSet.DataSource, а я о TdataSource.DataSet.
Прошу прощения.


 
msguns ©   (2005-07-26 11:20) [10]

>Ega23 ©   (26.07.05 11:17) [8]

Только вот не надо в церковь с б..ми, а в бордель с попами, ладушки ? Грид - это грид, а датасет - это датасет. И датасету глубоко серобуромалиново, кто там юзает его рекорды для визуализации или чего-там еще. Кстати, из сабжа вообще не видно, отображается ли квери1 или нет.

Ежа, не умничай ;))


 
Lexer ©   (2005-07-26 11:23) [11]

>msguns ©   (26.07.05 11:20) [10]
>Кстати, из сабжа вообще не видно, отображается ли квери1 или нет

>777   (26.07.05 10:34) [0]
>PS однако сам результат запроса в Query1 прекрасно отображается в гриде, если грид настроить на Query1


 
Ega23 ©   (2005-07-26 11:24) [12]

2 msguns ©   (26.07.05 11:20) [10]
Ежа, не умничай ;))

Да я просто как раз сейчас эту фигню мучаю, с TDataLink...
Достало уже...


 
msguns ©   (2005-07-26 11:25) [13]

>Lexer ©   (26.07.05 11:23) [11]
>777   (26.07.05 10:34) [0]
>PS однако сам результат запроса в Query1 прекрасно отображается в гриде, если грид настроить на Query1

Блин, имелось в виду, что к сабжевой проблеме грид ни ухом, ни рылом.
Лишь бы прикопаться ?
;)))


 
777   (2005-07-26 11:26) [14]

2 msguns
Да, все нормально! Всем огромное спасибо! За просвещение особенно!!!


 
ANB ©   (2005-07-26 11:31) [15]

Автору :

Поубивал бы за такой код.

1. Напиши инсерт с параметрами.
2. Полный изгал - пихать в SQL.Text кучу инсертов.
3. Вместо ADOQuery1.DataSource.DataSet.FieldByName
надо ADOQuery1.FieldByName. А DataSource у нее и должен быть nil (хорошо хоть сразу на ошибку нарвался).
4. Еще лучше для такого варианта - как в msguns ©   (26.07.05 11:01) [3]
4. Купи книжку. И прочитай ее.


 
msguns ©   (2005-07-26 11:38) [16]

>Ega23 ©   (26.07.05 11:24) [12]
>Да я просто как раз сейчас эту фигню мучаю, с TDataLink...
Достало уже...

Кто о чем, а матрос о сиське ;))
Сори за офтоп


 
777   (2005-07-26 11:40) [17]

2 ANB
1. инсерт с параметрами писать не умею: маленький еще, студент;
2. согласен, просто другого способа не знаю;
3. уже все давно понял;
4. книжку я и так читаю, но не всё сразу!
а если результат query1 еще пока не есть таблица в базе (просто набор данных в моей программе), то как я могу делать такой запрос:
insert into TempTable (...) values ((select ..., ..., ... from <вот здесь данные у меня в query1, а не в таблицеб которая в базе>))


 
Fay ©   (2005-07-26 11:41) [18]

2 ANB ©   (26.07.05 11:31) [15]
>> 2. Полный изгал - пихать в SQL.Text кучу инсертов.
INSERT-ов нужно писать ровно столько, сколько требуется.

>> 4. Купи книжку. И прочитай ее.
Согласен, клиент созрел 8)


 
Fay ©   (2005-07-26 11:42) [19]

2 777   (26.07.05 11:40) [17]
Читай книжку внимательнее. У тебя очень подозрительное (для MSSQL) имя временной таблицы.


 
Fay ©   (2005-07-26 11:44) [20]

2 777   (26.07.05 11:40) [17]
Ещё. Никаких for Index := 1 to ADOQuery1.RecordCount do! В крайнем случае
ADOQuery1.First;
while not ADOQuery1.Eof do
 begin
   ...
   ADOQuery1.Next;
 end;


 
777   (2005-07-26 11:45) [21]

2 Fay
Да, но мне же надо сначала посмотреть, как она заполняется, вот я и сделал пока не временную, а простую.
а по поводу книжки... Есть просто вещи, которые только с опытом приходят. по крайней мере мне так кажется


 
msguns ©   (2005-07-26 11:47) [22]

>777   (26.07.05 11:40) [17]
>insert into TempTable (...) values ((select ..., ..., ... from <вот здесь данные у меня в query1, а не в таблицеб которая в базе>))

values тут не нужен

INSERT INTO T1 (P1,P2,P3,..PN)
  SELECT P1,P2,P3,...PN FROM T2
    WHERE ...

Главное, чтобы все эти P1,P2..PN были однотипными.

А вообще Delphi->Help->Deplhi Tools->Local SQL->DML-Statements->INSERT


 
msguns ©   (2005-07-26 11:50) [23]

Для работы со скалой из дельфей (ADO+Jet) почитай еще jetsql40.chm


 
Fay ©   (2005-07-26 11:52) [24]

2 777   (26.07.05 11:45) [21]
Стоит послушать msguns

2 msguns ©   (26.07.05 11:47) [24]
>> А вообще Delphi->Help->Deplhi Tools->Local SQL->DML-Statements->INSERT
На самом деле автору нужно в Books Online.


 
Ega23 ©   (2005-07-26 11:52) [25]

Мне так кажется, что и Delphi-то тут не нужен...
Всё можно средствами MS SQL решить...


 
Fay ©   (2005-07-26 11:52) [26]

2 msguns ©   (26.07.05 11:47) [24]
Потрясаюшая креативность!!! 8)


 
77   (2005-07-26 11:56) [27]

нет гарантии, что они однотипные, поэтому приходится юзать кучу инсертов.


 
msguns ©   (2005-07-26 11:59) [28]

>77   (26.07.05 11:56) [27]

CAST/CONVERT в помощь


 
Fay ©   (2005-07-26 12:01) [29]

2 77   (26.07.05 11:56) [27]
Это не причина. Приведение можно сделать и на T-SQL.

З.Ы.
77 после 777 - это повышение/понижение по званию? 8)


 
ANB ©   (2005-07-26 12:04) [30]


> Fay ©   (26.07.05 11:41) [18]
- не нужно, а можно. Но не нужно. Куда эту строку потом пихать ? И, имхо, далеко не все сервера едят пакетные инсерты. Это особенность MS SQL. Зачем извращаться то.


> 77   (26.07.05 11:56) [27]
> нет гарантии, что они однотипные, поэтому приходится юзать
> кучу инсертов.
??????? Если у тебя Table1.P1 и Table2.P1 разнотипные, то тут и куча инсертов не поможет.


 
Fay ©   (2005-07-26 12:11) [31]

2 ANB ©   (26.07.05 12:04) [30]
>> И, имхо, далеко не все сервера едят пакетные инсерты. Это особенность MS SQL.

Враки. Злобные враки.

>> Зачем извращаться то.
Это не извращение. Запрос должен включать с себя то, что он должен делать. Не вижу повода для воздержания.


 
ANB ©   (2005-07-26 12:23) [32]


> Fay ©   (26.07.05 12:11) [31]

Oracle + Odac - не работает.


 
777   (2005-07-26 12:23) [33]

Ну вот!
Запрос
INSERT INTO TempTable (ProviderID,  [Name], Chatacteristics, ProviderPrice, Presence)
(SELECT Code, [Name], Characteristics, Price, Presence
FROM ADOQuery1)
ошибка: неопознал ADOQuery1. в запросах же можно только объекты БД указывать, а не мешать их с объектами программы.


 
ANB ©   (2005-07-26 12:25) [34]


> 777   (26.07.05 12:23) [33]

Читать учебники еще раз, до полного просветления.
Ну откуда MS SQL знает о существовании ADoQuery, твоей программы и вообще Delphi ?
У тебя в ADOQuery1 что лежит ?


 
753   (2005-07-26 12:27) [35]

результат запроса


 
Fay ©   (2005-07-26 12:30) [36]

2 ANB ©   (26.07.05 12:23) [32]

>> Это особенность MS SQL.
>> 2 Oracle + Odac - не работает.

Во первых.
Что-то я не совсем понимаю. IMHO, (ODAC <> dbGO) & (MSSQL <> Oracle).

Во-вторых. (Odac+Oracle) и так не жуют?
begin
 insert into Table1(... ;
 insert into Table1(... ;
 insert into Table1(... ;
 insert into Table1(... ;
 insert into Table1(... ;
 insert into Table1(... ;
 commit;
end;


 
777   (2005-07-26 12:32) [37]

вы бы открыли параллельную ветку и разговаривали бы там про оракл и одак. конечно, спасибо вам огромное (и за насмешки ваши тоже), но...


 
Fay ©   (2005-07-26 12:36) [38]

2 777   (26.07.05 12:23) [33]

ADOQuery2.SQL.Text :=
"insert into TempTable (ProviderID,  [Name], Chatacteristics, ProviderPrice, Presence)"#13#10+
"select Code, [Name], Characteristics, Price, Presence"#13#10+
"from ("+ADOQuery1.SQL.Text+") Q";


 
msguns ©   (2005-07-26 12:40) [39]

>Fay ©   (26.07.05 12:36) [38]

Так не корректно (в квери могут быть параметры или "лишние" поля)


 
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.64 MB
Время: 0.023 c
6-1116484303
SaX
2005-05-19 10:31
2005.09.04
нужны мануалы или примеры по Tidsnmp


3-1122030759
GekaNaz
2005-07-22 15:12
2005.09.04
Настройка Yaffil сервера


3-1122014076
DimonS
2005-07-22 10:34
2005.09.04
Как организовать одновременный доступ к БД Paradox?


1-1124110639
tormoz
2005-08-15 16:57
2005.09.04
Видимость отдельных закладок в TabbedNotebook


14-1123747026
Ilya___
2005-08-11 11:57
2005.09.04
Как думаете сколько мне можно попросить за мою програмку?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский