Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.29;
Скачать: CL | DM;

Вниз

запрос SQL   Найти похожие ветки 

 
Ирг   (2009-09-25 11:06) [0]

Помогите разобраться !!!

 DataModule2.ADOQuery2.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\;Extended Properties=dBASE IV;Persist Security Info=False";
DataModule2.ADOQuery2.Close;
DataModule2.ADOQuery2.SQL.Clear;
DataModule2.ADOQuery2.SQL.Add("declare @var1 int, @var2 int, @quer1 int, @quer2 int");
DataModule2.ADOQuery2.SQL.Add("set @var1 = "SELECT IDn, f, i, o, dr FROM Atab IN  "1" "dBASE IV;" ");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "2" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "3" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "4" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "5" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "6" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "7" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "8" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "9" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "10" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "11" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, f, i, o, dr FROM Atab IN  "12" "dBASE IV;""");
DataModule2.ADOQuery2.SQL.Add("set @var2 = "SELECT IDn, v, m, s, f FROM Btab IN  "1" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add(" UNION All SELECT IDn, v, m, s, f FROM Btab IN  "2" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add(" UNION All SELECT IDn, v, m, s, f FROM Btab IN  "3" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add(" UNION All SELECT IDn, v, m, s, f FROM Btab IN  "4" "dBASE IV;"");
DataModule2.ADOQuery2.SQL.Add(" UNION All SELECT IDn, v, m, s, f FROM Btab IN  "5" "dBASE IV;"");
 DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, v, m, s, f FROM Btab IN  "6" "dBASE IV;"");
 DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, v, m, s, f FROM Btab IN  "7" "dBASE IV;"");
 DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, v, m, s, f FROM Btab IN  "8" "dBASE IV;"");
 DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, v, m, s, f FROM Btab IN  "9" "dBASE IV;"");
 DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, v, m, s, f FROM Btab IN  "10" "dBASE IV;"");
 DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, v, m, s, f FROM Btab IN  "11" "dBASE IV;"");
 DataModule2.ADOQuery2.SQL.Add("UNION All SELECT IDn, v, m, s, f FROM Btab IN  "12" "dBASE IV;""");
DataModule2.ADOQuery2.SQL.Add("set @quer1 = "SELECT * FROM @var1 INNER JOIN @var2 ON Atab.IDn = Btab.IDn"");
DataModule2.ADOQuery2.SQL.Add("set @quer2 = "SELECT DISTINCT CL.IDn, CL.f, CL.i, CL.o, CL.dr, CL.v, CL.m,  CL.s, CL.f ");
DataModule2.ADOQuery2.SQL.Add("FROM @quer1 CL INNER JOIN @quer1 CR ON ");
DataModule2.ADOQuery2.SQL.Add("CL.IDn <> CR.IDn ");
DataModule2.ADOQuery2.SQL.Add("AND CL.f = CR.f ");
DataModule2.ADOQuery2.SQL.Add("AND CL.v = CR.v ");
DataModule2.ADOQuery2.SQL.Add("AND CL.i = CR.i ");
DataModule2.ADOQuery2.SQL.Add("AND CL.o = CR.o ");
DataModule2.ADOQuery2.SQL.Add("AND CL.m = CR.m");
DataModule2.ADOQuery2.SQL.Add("AND CL.dr = CR.dr ");
DataModule2.ADOQuery2.SQL.Add("AND CL.s <= CR.f "");
DataModule2.ADOQuery2.SQL.Add("EXEC (@quer2)");
DataModule2.ADOQuery2.Active:=true;

Неправильно определен объект parameter


 
Игорь Шевченко ©   (2009-09-25 11:47) [1]

Приз!


 
Ирг   (2009-09-25 11:47) [2]

Разве так нельзя ?


 
sniknik ©   (2009-09-25 12:10) [3]

запрос составлен по принципу - "а что тут думать, тут прыгать надо" © какой то анекдот
только с добавкой "если что на дельфимастере спрошу"...

> Разве так нельзя ?
ну, никто не запрещает, т.что можно. но только работать не будет, ни в jet ни в mssql, нигде. кстати а почему нет добавления особенностей/стилей из оракла/файребирд/mysql? упущение однако...

> Помогите разобраться !!!
бери книжку/справку где есть описание sql в jet и читай. тут нужно не разбираться, а переучиваться.


 
Anatoly Podgoretsky ©   (2009-09-25 12:33) [4]


> Разве так нельзя ?

Да кто же будет в этом разбираться, к тому же не по теме форума.


 
Сергей М. ©   (2009-09-25 12:41) [5]

Объявили ц/ч переменную

> declare @var1 int

и пытаемся засунуть в нее текст

> set @var1 = "SELECT


КаковО ?


 
test ©   (2009-09-25 13:21) [6]

Расскажи как ты умудряешся в одну переменную int воткнуть несколько полей?


 
MsGuns ©   (2009-09-25 13:34) [7]

Сабж напомнил старую притчу о том. как солдат просил у вдовицы водички попить - дай говорит, воды напиться, а то так жрать охота, что переночевать негде
:)


 
Ирг   (2009-09-25 13:39) [8]

>>test ©   (25.09.09 13:21) [6]

>>Расскажи как ты умудряешся в одну переменную int воткнуть несколько полей?

ступил маленько

varchar или char втыкать ?  я не знаю какой размер будет запроса !


 
Сергей М. ©   (2009-09-25 13:43) [9]


> Ирг   (25.09.09 13:39) [8]


> не знаю какой размер будет запроса


А зачем вообще тебе понадобилось все это ?
У клиента нет прямого доступа к этим DBF-файлам что ли ?


 
MsGuns ©   (2009-09-25 14:05) [10]

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


 
Сергей М. ©   (2009-09-25 14:14) [11]


> ленясь написать мини-цикл


Так и я туда же гну)

Цикл прямо на клиенте, не трогая никаким боком ни SQL вообще ни MSSQL в частности)


 
Сергей М. ©   (2009-09-25 14:21) [12]


> MsGuns ©   (25.09.09 14:05) [10]


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


 
MsGuns ©   (2009-09-25 14:27) [13]

>Сергей М. ©   (25.09.09 14:21) [12]
>зачем - не знаю.

Однако нацяльника сказал


 
MsGuns ©   (2009-09-25 14:45) [14]

>зачем - не знаю.

Рискну предположить (телепатор заржавел, ну а вдруг !)
Овощ тянет лямку в каком-нибудь Облупрснабсбытчего-то-тампроме, занимающемся в числе прочих и такой лабудой как сбор и анализ результатов работы своих подчиненных на "местах". В деревнях и селах поставили компы, а на них самопальную чуду-софтюху на клиппере или, если контора продвинутая, на фоксе. Местные служаки усердно заполняют "поля", и в результате образуются дбф-ки, которые и мылятся или эфтээпятся в контору.
Нацяльника конторы очень заботит возможность оперативного (т.е. в любой момент) обзора всего заполненного, но смотреть по одному отчету, клацая мышкой по надцать раз, его колбасит,- вот он и поручил своему программеру сострогать что-то поудобнистее

:)


 
Ирг   (2009-09-25 14:49) [15]

Огурец еще зеленый  !!!

базы нет

есть куча dbf которые поступают каждый месяц

мне нужно достать из них нужные цифры

к dbf полный доступ можно воротить ими как угодно

покажите как лучше

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

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

ПОМОГИТЕ  ЧЕМ МОГИТЕ ...........


 
test ©   (2009-09-25 14:50) [16]

MsGuns ©   (25.09.09 14:45) [14]
Перечитал тему не понял, как приведенный код относиться к твоей версии?


 
Anatoly Podgoretsky ©   (2009-09-25 14:52) [17]

> MsGuns  (25.09.2009 14:45:14)  [14]

Может быть, я как то видел очень крутой софт, для горуправы, очень дорогой, а на самом деле это был Нортон Коммандер под ДОС


 
sniknik ©   (2009-09-25 14:53) [18]

> ни MSSQL в частности)
какой MSSQL? у него jet. это в запросе сборная солянка.

> ПОМОГИТЕ  ЧЕМ МОГИТЕ ...........
программу за тебя написать? тебе уже сказано что делать - изучать то что используешь, в этом случае jet.


 
Сергей М. ©   (2009-09-25 14:55) [19]


> MsGuns ©   (25.09.09 14:45) [14]


Вполне может быть)


 
sniknik ©   (2009-09-25 14:58) [20]

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


 
Сергей М. ©   (2009-09-25 14:59) [21]


> к dbf полный доступ можно воротить ими как угодно


ну так а зачем тогда весь этот огород с запросами, юнионами, ХПшными заморочками и прочей лабудой ?

Возьми обычный TClientDataSet, пройдись в цикле по всем DBFам, открывая их по очереди, и заполни ClientDataSet записями из этих DBF ..


 
Сергей М. ©   (2009-09-25 15:01) [22]


> sniknik ©   (25.09.09 14:53) [18]
> какой MSSQL?


А бис его знает)
Откуда-то же к нему свались шматки текстов в синтаксисе, характерном для MSSQL ..


 
Плохиш ©   (2009-09-25 15:08) [23]


> ПОМОГИТЕ  ЧЕМ МОГИТЕ ...........

А смысл?


 
Anatoly Podgoretsky ©   (2009-09-25 15:14) [24]


> Откуда-то же к нему свались шматки текстов в синтаксисе,
>  характерном для MSSQL ..

А ничего другого просто в Сети не нашел.


 
test ©   (2009-09-25 15:48) [25]

Пишешь програмулинку чтобы пасла на предмет новых dbf папку, новые открываешь и как в [21] отправляешь в основную БД, после копируешь в папку обработанные. Потом удаляешь обработанный файл.


 
Ирг   (2009-09-25 16:16) [26]

Огурец не получал еще так много информации в абстрактном виде .....
Можно код товарищи мастера !!!

>>Возьми обычный TClientDataSet, пройдись в цикле по всем DBFам, открывая их >>по очереди, и заполни ClientDataSet записями из этих DBF ..

как это ?

>>Пишешь програмулинку чтобы пасла на предмет новых dbf папку, новые >>открываешь и как в [21] отправляешь в основную БД, после копируешь в >>папку обработанные. Потом удаляешь обработанный файл.

и это как ?
как ?


 
Сергей М. ©   (2009-09-25 16:22) [27]


> как это ?


> и это как ?


> как ?


Вот ведь раскакался)

Ты вот расскажи для начала, что ты дальше собрался делать с этим ADOQuery2, если бы вся эта петрушка у тебя чудесным образом заработала ?


 
Ирг   (2009-09-25 16:26) [28]

если бы вся эта петрушка у меня чудесным образом заработала !!!!!!!
вывел в DBGrid1 и мне больше и не надо !


 
Сергей М. ©   (2009-09-25 16:29) [29]

А DBFы с луны все падают и падают ..

Ты вообще представляешь себе, какой кошмар ожидает того, кто будет глазеть в этот грид, когда DBFов этих накопится с вагон и более ..


 
Ирг   (2009-09-25 16:33) [30]

Мне нужно в при выходе удалять результат запроса

dbf всего 2 талицы по 12 шт  и больше быть не может


 
MsGuns ©   (2009-09-25 16:35) [31]

Блин, вот пример допотопного алгоритма
1. В десктопе создаешь дбф нужной структуры (вообще-то можно автоматом получить из имеющихся в папке-"обезьяннике" (для непронятливых: обезьянником менты называют накопитель, куда сажают пойманных на базаре-вокзале личностей без длокументов, а так как там полно негров, пардон, афроамериканцев, то.. в общем понятно, я думаю), но это надо быть слегка продвинутым.
2. Пишешь в дельфи (ваське, сях, пёрдле, жабе или где-нибудь - по барабану) такую хитровыдуманную софтюху:
 - чистишь агрегатный дбф (тот самый, что был сварганен в DBD)
 - опрашиваешь содержимое "обезьянника" и всех афроамериканцев поименно заносишь в список
 - в цикле пробегаешь список и для каждого мастеришь строку
       Insert * into MyDBF from select * from <имя афроамериканца (подставляешь из списка>
      после чего встромляешь его в TQuery.Text и выполняешь.
 - открываешь MyDBF, связываешь его с сеткой и наблюдаешь результаты.
 - к сетке примастрячь делфишный нафигатор типо для крутизны
3. Показываешь нацяльнику софтишшу и намякиваешь, что за месяцок и скромную премию в размере 3-х окладов сможешь соорудить еще поиски, фильтры, сортировки и прочую малину.
4. Если нацяльника соглашается, нанимаешь программиста-желтоогуречника и за одын оклад и одын день он делает в подшаманивает твою прогу до нужной функциональности.


 
Сергей М. ©   (2009-09-25 16:44) [32]


> в при выходе удалять результат запроса


Он и так сам по себе "удалится", ты же нигде его не сохраняешь)


> dbf всего 2 талицы по 12 шт  и больше быть не может


И там они застынут на веки вечные ?
Тогда дождись, когда все 24 штуки благополучно свалятся, и не морочь людям голову, мол, чего делать если дбф в папке не оказалось.. Ты ведь именно этим изначально озаботился ?)


 
Плохиш ©   (2009-09-25 16:54) [33]


> MsGuns ©   (25.09.09 16:35) [31]
>
> Блин, вот пример допотопного алгоритма

Хм, аФФтар вроде алгоритма не просил.

> Ирг   (25.09.09 16:33) [30]

Подойди к начальнику, сделай добрые глазёнки и скажи "Насяльника, насяльника, найми программиста"


 
Ирг   (2009-09-25 16:54) [34]

Огурцы всегда тупят по началу !!!

>>Он и так сам по себе "удалится", ты же нигде его не сохраняешь)

если он заработает !!!


 
Плохиш ©   (2009-09-25 16:56) [35]

Не полетит!


 
MsGuns ©   (2009-09-25 16:59) [36]

Кстати, в предложенный в [31] алгоритм надо добавить едну штукенцию дабы начальник свовсем обалдел от радости, а именно в агрегатный дбф добавить поле, куда заносить погонялово очередной "обезьяны". Тогда в сетке можно будет увидеть кто собсна "заполнял".
Как говорил Петр I "Чтоб дурь каждого видна была"


 
Сергей М. ©   (2009-09-25 17:03) [37]


> если он заработает


Оно не заработает, даже не надейся)

А что, собссно, мешает создать собственную БД с таблицей MyTable, куда можно было  добавлять содержимое вновь упавших DBF, по одной по мере падения ?
Тогда это заработало бы при простейшем запросе "SELECT * FROM MyTable"

Или начальник запретил ?)


 
MsGuns ©   (2009-09-25 17:08) [38]

>Сергей М. ©   (25.09.09 17:03) [37]

Плагиатничаем помаленьку ?
:)


 
Сергей М. ©   (2009-09-25 17:11) [39]


> MsGuns ©   (25.09.09 17:08) [38]


Так молчит же)
Знать ты и вправду попал в точку, ибо молчание - знак согласия)


 
Ирг   (2009-09-25 17:15) [40]

Если так намного лучше то конечно создам.

//в цикле пробегаешь список и для каждого мастеришь строку
//      Insert * into MyDBF from select * from <имя афроамериканца //(подставляешь из списка>

i:=0
while i<12 do
begin
Insert IDn, f, i, o, dr into MyDBF from (SELECT IDn, f, i, o, dr FROM Atab IN  "1" "dBASE IV;");
i++
end

как менять папку в цикле ?



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2009.11.29;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.013 c
2-1255428458
Franzy
2009-10-13 14:07
2009.11.29
"Убить" программу


15-1254408944
БарЛог
2009-10-01 18:55
2009.11.29
Чёрное пятно на ЖК мониторе


15-1252418473
Наиль
2009-09-08 18:01
2009.11.29
Кому Windows XP бесплатно?


2-1255329098
yantux
2009-10-12 10:31
2009.11.29
Сработало исключение EOutOfMemory: как оптимизировать память?


2-1255599480
ford
2009-10-15 13:38
2009.11.29
Получить последнюю папку из пути