Вы пытаетесь использовать доступ к Ms, как если бы вы использовали Excel. Возможно, вам будет проще делать то, что вы хотите, используя формулы макроса Excel Excel.
Мощность доступа заключается в том, что это система SQL (именно поэтому вы получаете декартово произведение, когда вы присоединяетесь к этой идее), это звучит так, как будто вы хотите легко справиться с плоской электронной таблицей. Вы можете написать VBA для добавления строк для вас, если хотите автоматизировать эту часть.
Если это не поможет, то, возможно, более подробно расскажите, чего вы на самом деле хотите достичь.
EDIT:
я пропустил часть в вашем посте, где вы сказали, что вы делаете вычисления, используя прежние значения. Это, как я бы добиться этого в рамках одного запроса доступа:
qry_Data: (based on tbl_Data)
id aa bb cc calc
--- --- --- --- ---
01 12 34 56 =Dlookup("aa","tbl_Data","id = " & [id] - 1)
02 78 91 01 =Dlookup("aa","tbl_Data","id = " & [id] - 1)
Вы не должны добавлять столбцы в таблицу как часть нормальной работы. Таблицы доступа должны быть настроены для хранения всех данных, которые им когда-либо понадобятся (пока ваша модель не изменится). Если вы создаете операцию в доступе, и кажется, что она должна добавлять столбцы, тогда вы должны добавить связанную таблицу или использовать вычисленное поле. В приведенном выше примере полевое вычисление будет равно значению «aa» из записи с идентификатором № 1, меньшим, чем текущая запись. Это будет работать только в том случае, если есть запись с этим ID #, поэтому, если есть вероятность наличия пробела в идентификационных номерах, вы не должны использовать этот точный метод. Поскольку вы сказали, что таблица сортируется по определенной критике, вам может потребоваться использовать другой метод для определения предыдущей записи. Один из способов сделать это в VBA будет выглядеть так:
Dim RS as Recordset
Set RS = CurrentDB.QueryDefs("myQuery")
RS.MoveLast
RS.MovePrevious
В этот момент вы находитесь на втором к последнему записи и может получить доступ любые значения из этой записи с:
RS.Fields("aa")
Не зная точно то, что вы пытаетесь сделать, я не могу сделать никаких конкретных рекомендаций, кроме того, если вы познакомитесь с базовыми концепциями SQL, и вы найдете работу в Access намного проще.
У вас должен быть сортируемый уникальный ключ. Если нет, вы не можете определить «предыдущую» запись. – Gustav
qry1 сортируется по определенным критериям, поэтому мне нужно добавить ключ к обеим сторонам? – ahb1
Не, если эти критерии уникальны. – Gustav