Страница 1 из 1

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

Добавлено: 11 Январь 2010, 18:43
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

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

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

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

 MAVLOAD( |
'SELECT 
   IDTemplate,
   IDUser,
   TemplateSize,
   TemplateBuffer
FROM
   Template', MyQueue)
И также топорно бежать по очереди, а не по view как в приведенном примере

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

Добавлено: 12 Январь 2010, 10:22
gopstop2007
Я думал что все проще, отбирается(находится) по условивию одна запись
и все :) А без очереди нельзя?

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

Добавлено: 12 Январь 2010, 10:41
StillZero
У тебя функция FingerTemplate как то что то сравнивает, как мне неизвестно.
Тебе в рассылке ответили, что если ты сам писал эту функцию, то можешь переписать ее на mySQL как user defined function (или подключаемая dll, или .NET сборка, или еще как я хз), тогда можно будет одним запросом.
Есть желание... вперед.
Очередь - решение достаточно простое.

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

Добавлено: 13 Январь 2010, 22:07
gopstop2007
Я бы переписал, если бы знал SQL, поэтому и спрашиваю знатоков.
Моего понимания не хватает, чтобы сразу с клариона "прыгнуть" в sql - тяжело. Особенно
клашиного оператора get, выборка записей в sql по select и т.д
Тяжело перестроить философию, поэтому обратился к шаблонам А.Мялина, чтобы понять и оценить возможности и увидеть результат в sql для моего приложения. И если будет все ок, то зачем мне изобретать велосипед, купим шаблоны :)