MS Access Перемещение записей в поля - PullRequest
3 голосов
/ 23 января 2009

У меня есть соединение ODBC с базой данных, которой я не владею и не могу изменить. Я собираюсь сделать так, чтобы связанные записи слились в одну запись. Отношение 1 ко многим.

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

Желаемый Вызвать структуру файла:

PHONE     Inst1                  Inst2                  Inst3
555-5555  John was absent today  Jane was absent today  Joe was absent today

в сопоставлении с существующими данными:

PHONE     Inst
555-5555  John was absent today  
555-5555  Jane was absent today  
555-5555  Joe was absent today

Есть предложения?

1 Ответ

1 голос
/ 23 января 2009

Моим первым побуждением было использование кросс-таблицы; однако, это может стать немного волосатым.

Как насчет вырезания некоторого кода VBA в модуле, чтобы объединить их вместе и затем вставить в другую таблицу (что-то вроде следующего - полностью непроверенное и, вероятно, где-то сломано)?

dim strAbsent as string
dim currPhone as string
dim lastPhone as string
Dim db As Database
Dim rstAbsent As Recordset
Dim rstAbsentReport As Recordset

Set db = CurrentDb
Set rstAbsent = dbV.OpenRecordset("select * from Absent", _
                                    dbOpenDynaset, dbSeeChanges)
Set rstAbsentReport = dbV.OpenRecordset("select * from AbsentReport", _
                                        dbOpenDynaset, dbSeeChanges)

'...
do while not rstAbsentReport.EOF
    currPhone = rstAbsentReport("phone")
    lastPhone = currPhone 
    do while currPhone = lastPhone _
            and not rstAbsentReport.EOF
        strAbsent = strAbsent & ";" & rstAbsentReport ("comment")
        'Yes I know concatenating strings this way is terribly inefficient

        rstAbsentReport.MoveNext
        if not rstAbsentReport.EOF then
            currPhone = rstAbsentReport("phone")
        end if
    last
    rstAbsent.AddNew
    rstAbsent ("call") = strAbsent
    rstAbsent.Update
loop
'... clean up of recordset variables left as an exercise
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...