Class TSQL

Alexander Say
Дата: 05.06.2004 01:32:11
Уважаемая публика,
Вопрос, так сказать в глобальном смысле, актуален.
Все наверное сталкивались с трудоемкой работой по конструированию, написанию и отладке запросов. Каждый эту операцию делает по своему:
- Кто то химичит с конструктором а потом переводит в string SQL вставляет в текст модуля в виде константы.
- Кто то (понимающий основы) собирает в самом модуле но то же из строчных констант.
- Кто то вставляет что то типа:
             Type SqlDetail
                       SqlSelect As String 
                       SqlWhere As String
                       SqlOrder As String
              End Type
              …
              Fuction  ScatterSQL (strSQL as string) 
              …
              Function AssemblSQL(DetSQL As SqlDetail) As String
              …
и уже манипулирует с определенными частями запросов.
Вот и я прошел весь этот или похожий на этот путь и что в итоге. При переходе от MDB к ADP пришлось достаточно долго возиться в забытых процедурах и функциях исправляя всякие нестыковки( типа Boolеan и Bit, IIF и т.д.) Ух и повозился же я, это только кажется что все просто тем более есть же конвертор. Когда кто-то говорит “нема проблем” я смеюсь. Или они уже были умные и знали о разностях этих двух структур или читали дельные советы в момент написания MDB, в чем я сильно сомневаюсь. Тяжелый проект запросто не перенести !!!!
Да, я увлекся, перейдем к главному:
Самый большой и самый нескромный вопрос.
Может кто-то из вас уже думал как создать Class TSQL ??? а может это уже реальность? И он еще и FreeWare. Поделитись знаниями , a-aaa ?
Ведь это читается как шедевр:

Set aSQL = New TSQL
aSQL.field.add “FieldUppss”
aSQL.field.add “FieldPupss”
aSQL.from = “TrablеBum”
? aSQL.Select
SELECT FieldUppss, FieldPupss FROM TrablеBum
aSQL.field.remove  aSQL.fields(2)
aSQL.order.add  aSQL.fields(1), sqlDESC
aSQL.IsOrder=true
? aSQL.Select
SELECT FieldUppss FROM TrablеBum ORDER BY FieldUppss DESC

А еще если ENUM и подсказки выходят чего забивать , переменные нормально объявленны (в их именах смысл понятный всем), совсем кайф.
О внутренностях Class(a) можно и не думать. Все понятно при определении.
Владимир Саныч
Дата: 05.06.2004 02:17:47
А неплохо было бы.

Могу сказать, что заготовка для такого класса в Аксессе есть. Она сидит в системной таблице MSysQueries. Можно увидеть все, что относится к одному запросу, если отфильтровать таблицу по полю ObjectId, значение которого можно взять из таблицы MSysObjects (задаем Name и Type, берем Id).
(c)VIG
Дата: 05.06.2004 13:54:04
Имхо, никому не нужная и пустая трата времени.

Или они уже были умные и знали о разностях этих двух структур

А вот этого совсем не понял. А как можно переносить приложение с одной платформы на другую ,не зная различий между ними?
Omar_K
Дата: 05.06.2004 14:40:49
а не лучше ли олаживать запросы в Квери Аналайзере импортнуть таблицы и пошел их отлаживать?
Alexander Say
Дата: 06.06.2004 01:22:51
автор
А вот этого совсем не понял. А как можно переносить приложение с одной платформы на другую ,не зная различий между ними?


Когда создаешь MDB врят ли приходит в голову, что MDB когда то станет ADP.
Посему соломку не стелишь, пишишь так чтобы работало, а вот будет ли это работать в ADP ? Ну к примеру
    ... WHERE DBAAA.FieldFFF=ControlField !!
Ну и насчет пустой траты. Интересно как реализовать многоконтекстный фильтр. В каждом модуле определять алгоритм сборки?! Да уж..Это время, время. Причем потраченное не рационально. Когда класс сам подберет синтаксис а контролы формы включат те или иные параметры. Весь алгоритм можно вынести на визуальный уровень. Это как конструктор. А если этот клас вставить еще в класс MyADODB да ещь с разграничением прав доступа к полям и таблицам. Можно писать универсальный интерфейс пользователя, а данные и возможности подберет сам класс в зависимости от статуса.

Открытость /доступность возможность вносить изменения пользователям с низкой квалификацией.