Clarion и MS SQL 2000

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Добрый день/вечер/ноч/утро Clarion'щики !

На кларе сижу (C55ee patch G) c 2000 года, написал ряд удачных проектов, используя в программах файлы TPS. Теперь требуется использовать Clarion + MS SQL Server 2000.

А вот в SQL я пока слабо сображаю, вернее если с самим серваком и таблицами/ключами/связями более - менее разобрался, то с использованием хранимых процедур в кларе или получение результата запроса в browse совсем туго. Ткните носом в нужном направлении. Хэлп по Ctrl-F1 читал, prop:sql смотрел, мало чего понял, вернее понял, что не все так просто, как хотелось бы !!!

Хотелось бы четких пояснений на вопросы, например:
- как с клары передать параметр в хранимую процедуру и получить результат выполения в броузере (естественно хранимка "параметризована") (или хотя бы как вызвать эту хранимку)?
- как получить результат SELECT в броузер?

Если кто замылит мне доку с примерами об этом (даже на буржуйском английском) буду тому человеку очень благодарен!

Так же буду очень благодарен за любой совет, подсказку, url, сайт и тд

---
Владислав Волосожар
mailto:vlad@vesco.donetsk.ua
Написал: ClaList(2)
Гость

Сообщение Гость »

Привет Владислав Волосожар

Вызов хп может быть различным для разных sql например для первасива параметры должны заключаться в скобки , а для мс не нужны
Пиши так

Код: Выделить всё

хп procedure a@ int , @b char(10)
as
select * from file where file.a=@a and file.b=@b

Вызов

Код: Выделить всё

file{prop:sql}='exec procedure ' & a & ',' & '''' & b &'''' 
loop
    next(file)
  if errorcode() then break .
    обработка
end

Если нужно получить не все поля файла , то создавайте view или используйте odbc api

Домашний <soft2@mail.redcom.ru>

Спасибо за ответ
а что я получу в результате вызова хранимой процедуры?
(строка, очередь.... и как этот результат обработать?)

сильно подозреваю, что получу строку, а как ее обработать?
или я зря "сильно подозреваю"?

Владислав Волосожар
Написал: ClaList(2)
Гость

Сообщение Гость »

Считайте что вы получили файл урезанный на значение после where.
Если where нет , то получили полный файл .
При next(file) получаете в буфер файла значения полей ,
почно так как обычное чтение файла .
Далее эти поля вы присваиваете полям очереди (queue) потом идет add(queue) и потом отображаете на экране , ну или что хотите.
Вообще не очень понятен вопрос .
Файл вы для чего читаете ?

Домашний

Ответ на вопрос /если я правильно понял вопрос :) /:

Есть весы, которые автоматически взвешивают автомобили с грузом

есть таблица Т1 на серваке примерно такой структуры, куда весы сливают инфу о взвешиваемом авто

Код: Выделить всё

DateTime    Id1   Id2   Id3 ... W 

есть ряд записей в таблице, например

Код: Выделить всё

DateTime        Id1    Id2   Id3 ...    W
12/02/04 8:00   1      1      1        100    <-машина (Id1) привезла груз (Id2) на склад /вес (W) с грузом = 100/
12/02/04 8:10   1      1      0         50    <-машина (Id1) выехала со склада /вес (W) пустой машины = 50/ 
12/02/04 9:00   1      1      1        120    Id3 - признак заезда/выезда (1)-полной (0)-пустой машины 
12/02/04 9:10   1      1      0         49
12/02/04 9:20   1      1      1        150 
12/02/04 9:30   1      1      0         52
 
...
12/02/04 9:15   2      1      1         45
12/02/04 9:25   2      1      0         30
12/02/04 10:15  2      1      1         145
12/02/04 10:25  2      1      0         56
... 
PrimaryKey в таблице  (DateTime,Id3)

вот хотел на основе этой таблицы провести выборку данных и показать пользователю уже в итоговой таблице Т2 различную инфу, как то количество ходок, кол-во груза и тд

итоговая таблица будет иметь примерно такой вид:

Код: Выделить всё

Id1 машины  Номер ходки   Время заезда     Время выезда   Полезный груз
1            1            12/02/04 8:00    12/02/04 8:10    50
1            2            12/02/04 9:00    12/02/04 9:10    71
 
...

к тому же в данной задаче присутсвует очень много доп ньюансов, например, поломка весов и тд
я хочу /наверно так и сделаю/ хранимку, которая будет "выливать" инфу из таблицы Т1 в Т2 учитывая различные "подвыборки" и тд в связи с этим возникли все вышеперечисленные вопросы

Владислав Волосожар

Ну да , все подробно .
Тогда вопрос с какого боку нужен кларион ?
Делайте заполнение T2 прямо в хп .
Вы сделаете вырезку из того что у вас уже есть тогда можно будет подсказать , а так не ясно в чем
проблема ?

Домашний

это правильно, я так и собираюсь сделать
только вот:
° пользователь, которому нужны результирующие данные - это мастер в цехе, который находится (цех) за 8 км от головной конторы, в которой расположен SQL сервак с данными
° пользователю (мастеру смены) требуется заполнить путевые листы водителям в конце смены, где (в путевом листе) будет указано много лабуды всякой, в том числе обязательно данные из результирующей таблицы Т2
° пользователь по определению - тупой чайник полный, ему требуется всего то кнопку нажать - получить результат движения транспорта на весах на экране и тд
° требуется создать клиентскую прогу, которая могла бы автономно работать в критических условиях (под этими условиями я понимаю как непроходимая тупость пользователя, так и "замусоренные" данные в исходной таблице Т1)
все данные из Т1 в Т2 будут переливаться хранимкой, которую вызовет пользователь, когда, например, нажмет на кнопку
в принципе, можно было и триггер повесить на insert в Т1, но есть ряд существенных ньюансов по поводу триггера, тк работа автовесов в случае поломки довольно специфична и тд

просто у меня был вопрос о взаимодействии клары и sql

Владислав Волосожар
Так же буду очень благодарен за любой совет, подсказку, url, сайт и тд
F1 - Database Drivers - SQL Accelerator Drivers

--
Всего наилучшего, porutchik mailto:porutchik@mail.primorye.ru
http://personal.primorye.ru/porutchik/
---------------------------------------------------------
Советские боевые слоны - самые боевые слоны в мире!
Написал: ClaList(2)
Ответить