MAV SQL - как заменить Loop и view

Обсуждение MAV Direct ODBC

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
✯ Ветеран ✯
Сообщения: 1703
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

MAV SQL - как заменить Loop и view

Сообщение gopstop2007 »

MAV Direct ODBC (Version 1.00) CLARION 6.3 ABC

Как в SQL (vs MySQL) найти уникальную запись(отпечаток пальца), которая в Кларионе находится
перебором всех записей в цикле (LOOP) путем сравнения
записи(отпечатка пальца) с оригиналом в базе.

Вроде как через оператор SELECT(SQL), но как только одну запись?!
Ниже как это реализовано на кларионе, как можно реализовать с
помощью шаблонов MAV MySQL?


===================================================
Template FILE,DRIVER('TOPSPEED'),NAME(GLO:TEMPLATE),PRE(TEM),CREATE,BINDABLE,THREAD
PK_IDTemplate KEY(TEM:IDTemplate),NOCASE,OPT,PRIMARY
LK_IDUser KEY(TEM:IDUser),DUP,NOCASE,OPT
AK_TemplateSize KEY(TEM:TemplateSize),DUP,NOCASE,OPT
N_TenplateBufferKey KEY(TEM:TemplateBuffer),NOCASE,OPT
Record RECORD,PRE()
IDTemplate LONG
IDUser LONG
TemplateSize LONG
TemplateBuffer STRING(1024) ! отпечаток пальца
END
END

View:Template VIEW(Template) !
!JOIN ALL FIELDS
END


ViewManager:Template.AddSortOrder(TEM:PK_IDTemplate)
ViewManager:Template.SetOrder('-TEM:IDTemplate')
ViewManager:Template.Open
ViewManager:Template.Reset
RUT:Counter = 0
LOOP UNTIL ViewManager:Template.Next()
RUT:Counter += 1
LOC:Result = FingerTemplate( |
4, | ! 4=сравнение Template
ADDRESS(LOC:VerifyScore), | ! отпечаток со сканера
ADDRESS(TEM:TemplateBuffer)| ! отпечаток с базы
)
IF LOC:Result = GR_MATCH ! отпечаток совпал
BREAK
END
END! LOOP
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: MAV SQL - как заменить Loop и view

Сообщение StillZero »

Не понятно на каком этапе возникает проблема. Даже топорно можно загрузить все записи с таблицы в очередь:

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

 MAVLOAD( |
'SELECT 
   IDTemplate,
   IDUser,
   TemplateSize,
   TemplateBuffer
FROM
   Template', MyQueue)
И также топорно бежать по очереди, а не по view как в приведенном примере
Все сайты закрыты...
gopstop2007
✯ Ветеран ✯
Сообщения: 1703
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Re: MAV SQL - как заменить Loop и view

Сообщение gopstop2007 »

Я думал что все проще, отбирается(находится) по условивию одна запись
и все :) А без очереди нельзя?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: MAV SQL - как заменить Loop и view

Сообщение StillZero »

У тебя функция FingerTemplate как то что то сравнивает, как мне неизвестно.
Тебе в рассылке ответили, что если ты сам писал эту функцию, то можешь переписать ее на mySQL как user defined function (или подключаемая dll, или .NET сборка, или еще как я хз), тогда можно будет одним запросом.
Есть желание... вперед.
Очередь - решение достаточно простое.
Все сайты закрыты...
gopstop2007
✯ Ветеран ✯
Сообщения: 1703
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Re: MAV SQL - как заменить Loop и view

Сообщение gopstop2007 »

Я бы переписал, если бы знал SQL, поэтому и спрашиваю знатоков.
Моего понимания не хватает, чтобы сразу с клариона "прыгнуть" в sql - тяжело. Особенно
клашиного оператора get, выборка записей в sql по select и т.д
Тяжело перестроить философию, поэтому обратился к шаблонам А.Мялина, чтобы понять и оценить возможности и увидеть результат в sql для моего приложения. И если будет все ок, то зачем мне изобретать велосипед, купим шаблоны :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить