07.12.2007, 14:02 | #1 |
Участник
|
Такое дело:
Иметься Т1 и Т2.(Таблицы) Они взаимосвязаны между собой полем “No.” T1 и Production BOM No в T2. В таблице Т1 есть записи З1Т1, З2Т1 и т.д В таблице Т2 есть записи З1Т2, З2Т2 и т.д. Мне нужно сравнить их на совпадение по 3 полям… Первое это по Name в Т1, Name в T2, “Quantity per” в Т3 Сначала идет сравнение по Name в T1, Если совпало то смотрим во вторую таблицу и сравниваем там записи по Name, Если воспали то по Qper. Совпало ура! Нет : Нет совпадений! // структура такая 1 : М (один ко многим)! Вот…я делал все таким образом: SpecHeader – Т1; SpecHeader2 – Т2; SpecLine – З1; SpecLine2 – З2; IF SpecHeader.FIND('-') THEN REPEAT SpecLine.SETRANGE("Production BOM No.",SpecHeader."No."); IF SpecHeader2.FIND('-') THEN REPEAT SpecLine2.SETRANGE("Production BOM No.",SpecHeader2."No."); IF SpecHeader."No." <> SpecHeader2."No." THEN BEGIN IF SpecHeader.Name = SpecHeader2.Name THEN BEGIN IF SpecLine.FIND('-') THEN BEGIN REPEAT IF SpecLine2.FIND('-') THEN BEGIN REPEAT IF SpecLine.COUNT = SpecLine2.COUNT AND ( SpecLine."Name." = SpecLine2."Name.") AND (SpecLine."Quantity per" = SpecLine2."Quantity per") BEGIN Ret:= TRUE; Var1:=SpecHeader."No."; Var2:=SpecHeader2."No."; END; UNTIL SpecLine2.NEXT = 0; END; UNTIL SpecLine.NEXT =0; END; END; END; UNTIL SpecHeader2.NEXT = 0; UNTIL SpecHeader.NEXT = 0; IF Ret = TRUE THEN MESSAGE('Есть совпадение') ELSE MESSAGE('Нету сопадений'); SETRANGE вроде нормально все делает… Не нравиться мне как работают эти циклы…. Что посоветуете? |
|