выравнивание соответствующих строк в наборе записей - PullRequest
0 голосов
/ 26 мая 2009

У меня есть два набора записей, которые имеют один и тот же первичный ключ: комбинация двух столбцов с именами 'item_no' и 'Order_id' ..... Оба набора записей имеют этот первичный ключ (комбинацию) и остальные другие разные столбцы ...

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

E.g рассматриваем rset1 и rset2 ... имеющие вышеуказанные столбцы в качестве комбинации первичных ключей, а row5 в rset1 имеет значения для 'item_no' и 'order_id' как 2 300 и строка 8 в rset2 имеет значения для вышеупомянутого как 2 300 (что совпадает) ....

1) Теперь я хочу перевести row5 (в rset1) в положение 8, чтобы обе записи были одинаковыми в позиции в наборах записей

2) если общие записи не найдены в обоих rsets ... тогда я оставлю это blnk в позиции tht (в rset1) для соответствующей строки (в rset2) [то есть для записи в rset2 есть нет соответствующей записи в rset1]

Всегда проверяется, что нет: записей в rset2> tht в rset1 ...

Можете ли вы помочь, как идти с выравниванием записей в наборе записей в VB6.0, поскольку я связывал бы эти наборы записей с Excel для отображения рядом?

Любой встроенный метод (для выравнивания или чего-либо еще) в VB6.0 ??

1 Ответ

1 голос
/ 26 мая 2009

В VB6 нет встроенного метода для этого (не то, о чем я знаю), однако это достаточно просто сделать самостоятельно.

Что вам нужно сделать, это создать два ложных списка записей, когда они у вас есть, вы можете выплевывать их как угодно (в CSV-файл, в Excel, в MS-доступ). CAVEAT: наборы записей должны быть отсортированы по первичному ключу для работы.

Этот код последовательно проходит по обоим наборам записей, создавая упорядоченные списки с пробелами или ссылками на запись (хотя он очень похож на код VB, считайте, что это псевдокод, логика верна, он не будет компилироваться)

Dim rs1 As Recordset
Dim rs2 As Recordset

Dim rs1List As Collection
Dim rs2List As Collection

REM code here to initialise the collections to new Collection and fill the record sets

Do While Not rs1.EOF And Not rs2.EOF
    If rs1("PKey") = rs2("PKey") Then
        rs1List.Add rs1.Bookmark
        rs2List.Add rs2.Bookmark
        rs1.Movenext
        rs2.Movenext
    ElseIf rs1("PKey") < rs2("PKey") Then
        rs1List.Add rs1.Bookmark
        rs2List.Add Nothing
        rs1.Movenext
    ElseIf rs1("PKey") > rs2("PKey") Then
        rs1List.Add Nothing
        rs2List.Add rs2.Bookmark
        rs2.Movenext
    End If
Loop
Do While Not rs2.EOF
    rs1List.Add Nothing
    rs2List.Add rs2.Bookmark
    rs2.Movenext
Loop
Do While Not rs1.EOF
    rs1List.Add rs1.Bookmark
    rs2List.Add Nothing 
    rs1.Movenext
Loop

Предполагается, что полем первичного ключа является PKey, и этот .Bookmark - это метод, который можно использовать для непосредственного перехода к этой записи (порядковый номер может использоваться при наличии).

Надеюсь, это поможет

Редактировать

Просто изменили некоторые биты в последних двух циклах, они были не совсем правы.

...