заполнение нескольких столбцов 0 и 1 (создание фиктивных переменных) - PullRequest
1 голос
/ 13 января 2011

У меня есть таблица ms-access 2003 с колонками exp и imp.В этих столбцах exp и imp у меня 75 стран.Я хочу создать в той же таблице фиктивные переменные exp1-exp75, imp1-imp75, показывающие, какая страна является exp, а какая - imp.Так, например, если exp - это Австралия (Австралия - первая страна), тогда exp1 должен быть равен 1, а все остальные exp2-exp75 - 0. И если imp - это Великобритания (Великобритания - пятая страна), imp5 должен быть равен 1, а все остальныеimp должен быть 0. Таким образом, таблица должна выглядеть следующим образом (если США - третья страна, а Италия - 17-я)

exp           imp    exp1 exp2 ...exp17 ... exp75 imp1 imp2 imp3 ... imp5 ... imp75


Australia     UK      1    0        0         0     0    0    0        1        0


Italy         USA     0    0        1         0     0    0    1        0        0

Спасибо.

1 Ответ

0 голосов
/ 13 января 2011

Я написал это в редакторе Access 2007, но VBA должен быть таким же.Я не думаю, что вы можете сделать это с помощью запросов.

Private Sub FillTable()

Const firstCountry  As Integer = 1
Const lastCountry   As Integer = 75
Const maxRows       As Integer = 234 'or whatever you need...


Dim impCountry  As Integer
Dim expCountry  As Integer

Dim db  As DAO.Database
Dim rs  As DAO.Recordset
Dim i   As Integer

Dim j   As Integer

    'function Random1to75 is left as an exercise for the reader
    impCountry = Random1to75
    expCountry = Random1to75

    Do Until expCountry <> impCountry
        expCountry = Random1to75
    Loop

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("select * from YourTable", dbOpenDynaset)

    For j = 1 To maxRows
        rs.AddNew
            For i = firstCountry To lastCountry
                If i <> impCountry Then
                    rs("imp" & i) = 0
                Else
                    rs("imp" & i) = 1
                End If

                If i <> expCountry Then
                    rs("exp" & i) = 0
                Else
                    rs("exp" & i) = 1
                End If
            Next
        rs.Update
    Next

    rs.Close
    Set rs = Nothing
    Set db = Nothing

End Sub
...