SQL
»»» Merle Corey (07.07.00 12:36) Существует следующая проблема: есть 4 таблицы в БД ORACLE -- Карточки, Пересылки, Исполнители и Департаметы. Связь сл. : К каждому департаменту привязаны исполнители. С исполнителями связаны пересылки. Ну а Пересылки связаны с карточками. Необходимо подсчитать кол-во карточек для каждого департамента. Как это сделать пошустрее.
»»» kingdom - kingdom@tepkom.ru (08.07.00 21:27) У меня были похожие проблемы, пришлось делять вложенный СКуЛь запрос типа select ... from (select .. from (select ...)) ну и применить соответсвующую функцию для подсчета (если очень дано могу позже написать как сейчас не помню), ... ну млм же вот в Access можно делать запросы прямо в самой MS-Access к которым можно обращаться как к обычным таблицам только понятно их физически нет, так вот в запрос включить все столбцы Карточек и столбец
с ID из Департамента тогда все должно быть быстро, попробуй...
-= Из конференции сайта MASTERS OF DELPHI (http://delphi.mastak.com) =-
Прикольно, но чуваки забывают, что есть еще понятие view, которое как раз и реализует то же, что и "ну млм же вот в Access можно делать запросы прямо в самой MS-Access к которым можно обращаться как к обычным таблицам только понятно их физически нет" т.е. пишется просто - create view test as select ... и дальше select ... from test, ... ну а в крайнем случае можно написать хранимую процедуру.
Комментарий от "Vladimir Krinitsin" (vvkrinitsin@hotmail.com) обычно делают так:
select count(Карточки.*), Деп.Имя from Карточки join Пересылки on ... join Исп. on... join Деп on... group by Деп.Имя
Комментарий
от "Grigory V Dutikov" (dutikov@accum.kursk.ru) Правильно для ORACLE:
create view CountCard as select count( k.*), d.DepName from Департамент d, Исполнители e, Пересылки p, Карточки k whe!
re d.DepName = e.DepName and e.ExeName = p.ExeName and p.KardName = k.KardName
P.S. Если на сервере русская кодировка, то имена таблиц и полей можно писать по русски и без кавычек!!! в Oracle8i и выше
4) Сохранение всего содержимого буфера обмена в файл
var FS:TFileStream;
procedure TForm1.bClearClick(Sender: TObject); begin OpenClipBoard(0); EmptyClipboard; CloseClipBoard; end;
procedure TForm1.BSaveClick(Sender: TObject); var CBF:Cardinal; CBFList:TList; i:Integer; h:THandle; p:Pointer; CBBlockLength,Temp:Cardinal; FS:TFileStream; begin if OpenClipBoard(0)then begin CBFList:=TList.Create; CBF:=0; repeat CBF:=EnumClipboardFormats(CBF); if CBF<>0 then CBFList.Add(pointer(CBF)); until CBF=0; edit1.text:=IntToStr(CBFList.Count); if CBFList.Count>0 then begin FS:=TFileStream.Create('e:\cp.dat',fmCreate); Temp:=CBFList.Count; FS.Write(Temp,SizeOf(Integer));
for i:=0 to CBFList.Count-1 do begin h:=GetClipboardData(Cardinal(CBFList[i])); if h>0 then begin CBBlockLength:=GlobalSize(h); if h>0 then begin p:=GlobalLock(h); if p <> nil then begin Temp:=Cardinal(CBFList[i]); FS.Write(Temp,SizeOf(Cardinal)); FS.Write(CBBlockLength,SizeOf(Cardinal)); FS.Write(p^,CBBlockLength); end; GlobalUnlock(h); end; end; end;
FS.Free; end; CBFList.Free; CloseClipBoard; end; end;
procedure TForm1.bLoadClick(Sender: TObject); var h:THandle; p:Pointer; CBF:Cardin!
al; CBBlockLength:Cardinal; i,CBCount:Integer; FS:TFileStream; begin if OpenClipBoard(0)then begin FS:=TFileStream.Create('e:\cp.dat',fmOpenRead); if FS.Size=0 then Exit; FS.Read(CBCount,sizeOf(Integer)); if CBCount=0 then Exit; for i:=1 to CBCount do begin FS.Read(CBF,SizeOf(Cardinal)); FS.Read(CBBlockLength,SizeOf(Cardinal)); h:=GlobalAlloc(GMEM_MOVEABLE or GMEM_SHARE or GMEM_ZEROINIT,CBBlockLength); if h>0 then begin p:=GlobalLock(h); if p=nil then GlobalFree(h) else begin FS.Read(p^,CBBlockLength); GlobalUnlock(h); SetClipboardData(CBF,h); end; end; end; FS.Free; CloseClipBoard; end; end; (на
основе кода Peter Below)
Сохранение и загрузка данных в объекты на примере коллекций.
Если в Вашей программе используются классы для описания объектов некоторой предметной области, то данные, их инициализирующие, можно хранить и в базе данных. Но можно выбрать гораздо более продуктивный подход, который доступен в Delphi.
Delphi 6. Базы данных и приложения
В книге предпринята попытка дать читателю целостное представление о процессе разработки программного обеспечения для реляционных баз данных. В рамках поставленной цели авторами решены следующие задачи: рассмотрены основы языка Object Pascal на примере создания консольных приложений; рассмотрены объектно-ориентированные возможности языка Object Pascal и технология визуального программирования; описаны основные принципы работы с SQL-ссрвером InterBase; изложена методика взаимодействия программ, созданных в среде Delphi, с базами данных различного типа, в частности, SQL-сервером InterBase: рассмотрены основы проектирования баз данных с использованием программы ERwin; описана "методика разработки клиентского приложения для доступа к базам данных с использованием библиотек динамической загрузки, а также популярных программ Word и Excel для создания отчетов. На примере
БД "Учебные компьютерные курсы" рассмотрен процесс разработки программного обеспечения, начиная с вопросов проектирования и заканчивая подготовкой отчетов. Книга может быть использована в качестве основы курса лекции по соответствующей дисциплине. Книга предназначена для старшеклассников, студентов, аспирантов, преподавателей и пользователей ПК, интересующихся программированием.
Автор: Кандзюба С. "ДиаSoft"
Дорогие друзья! Мы рады представить вам новый совместный проект сайтов www.rsdn.ru, delphi.mastak.ru и www.optim.ru - профессиональный журнал для программистов RSDN Magazine.
Несомненно, ваше мнение о необходимости такого журнала, содержании рубрик и темах отдельных статей поможет сделать журнал более полезным и интересным. Высказать свое мнение, проголосовать или же подписаться вы можете на сайте. Без вашего участия, нам будет трудно сделать правильный журнал!
На сайте выложен анонс пилотного выпуска журнала, вступительное слово от редакции.
Для души
Хокку дня
Льет весенний дождь! По пути беседуют Зонтик и мино.
Афоризмы
В ситуации, когда ты не знаешь, что делать - не делай ничего....
Фраза дня
...и написал Иисус конвертер water2wine, и стал раздавать его freeware...
Дурацкие законы (информация предоставлена сайтом kurilka.com)
В городе Провиденсе, Род Айланд (США), в магазинах запрещено по воскресеньям продавать зубную щетку и пасту одному и тому же покупателю.
В Аризоне (США) под угрозой штрафа запрещено класть спать осла в ванной.
И на закуску коротенький анекдот
- Мама, скажи: фунь. - Зачем? - Ну, скажи. - Да что это хоть такое? - Какая тебе разница, просто скажи: фунь! - Не буду я повторять глупости, которых не понимаю! - Вот и меня не заставляй английский учить!