Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Объединение строк в столбцы / 7 сообщений из 7, страница 1 из 1
06.02.2010, 21:37
    #36453668
Tatiana_V
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение строк в столбцы
Уважаемые форумчане
Помогите пожалуйста, если можите.
Нужна програмка , чтобы таблицу 1, имеющую 2 столбца:
1-1313214,1245525,2453566
2-4378535,4589485

Преобразовать в таблицу 2:
1-1313214
1-1245525
1-2453566
2-4378535
2-4589485

Разделителем служит запятая.
...
Рейтинг: 0 / 0
06.02.2010, 23:13
    #36453760
Tatiana_V
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение строк в столбцы
Tatiana_VУважаемые форумчане
Помогите пожалуйста, если можите.
Нужна програмка , чтобы таблицу 1, имеющую 2 столбца:
1-1313214,1245525,2453566
2-4378535,4589485

Преобразовать в таблицу 2:
1-1313214
1-1245525
1-2453566
2-4378535
2-4589485

Разделителем служит запятая.
См. файл.
Нужно из таблицы результат получить таблицу данные.
помогите кто сможет.
...
Рейтинг: 0 / 0
07.02.2010, 01:08
    #36453808
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение строк в столбцы
В файле, насколько я понимаю, разделителем служит не запятая, а запятая с пробелом.

А на каком языке требуется писать? И в чем вообще сложность? Открываете исходную таблицу, делаете цикл по всем записям, разбиваете командой Split строку с запятыми, делаете внутренний цикл по полученному массиву, записывая результат в целевую таблицу.
...
Рейтинг: 0 / 0
07.02.2010, 04:16
    #36453838
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение строк в столбцы
Shocker.Proразбиваете командой Split строку с запятыми, делаете внутренний цикл по полученному массивуShocker.Pro Вам объяснил, а я нарисую. И решение эксперта, в разделе www.sql.ru/MS Access стоит внимательно изучить. А пока так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Dim i As Integer, n, nomer
Do Until d.EOF()
    n = Split("" & d![Номер КП], ",")
    
    If UBound(n) >  0  Then
        nomer = d![Номер]
        r.AddNew
        r![Номер] = nomer
        r![Номер КП] = n( 0 )
        r.Update
        
        For i =  1  To UBound(n)
            r.AddNew
            r![Номер] = nomer
            r![Номер КП] = n(i)
            r.Update
        Next
    
    End If
    
    d.MoveNext
Loop
d.Close
r.Close
MsgBox "ГОТОВО"
С уважением
...
Рейтинг: 0 / 0
07.02.2010, 10:37
    #36453879
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение строк в столбцы
klen_,

Спасибо, а то я уж совсем забыл синтаксис Аксесса, все больше по VB.
Но два вопроса:
1) Где открытие таблиц?
2) Зачем нужен фрагмент кода:
Код: plaintext
1.
2.
3.
        r.AddNew
        r![Номер] = nomer
        r![Номер КП] = n( 0 )
        r.Update
...
Рейтинг: 0 / 0
07.02.2010, 10:44
    #36453881
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение строк в столбцы
klen_,

А "решение эксперта" безусловно красивее, хотя при ОЧЕНЬ длинных строках может оказаться менее оптимальным.
...
Рейтинг: 0 / 0
07.02.2010, 22:12
    #36454432
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение строк в столбцы
Shocker.Pro1) Где открытие таблиц?
2) Зачем нужен фрагмент кода:
Исправляюсь. Благодарю.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Private Sub Кнопка0_Click()
On Error GoTo err1

    Dim d As Recordset
    Dim r As Recordset
    
    Set d = CurrentDb.OpenRecordset("SELECT Номер, [Номер КП] FROM Данные ORDER BY Номер, [Номер КП]")
    Set r = CurrentDb.OpenRecordset("Результат")
    
    DoCmd.RunSQL "DELETE Результат.* FROM Результат"
    
    Dim i As Integer, n, nomer
    Do Until d.EOF()
        n = Split("" & d![Номер КП], ",")
        
        If UBound(n) >  0  Then
            nomer = d![Номер]
            
            For i =  0  To UBound(n)
                r.AddNew
                r![Номер] = nomer
                r![Номер КП] = n(i)
                r.Update
            Next
        
        End If
        
        d.MoveNext
    Loop
    d.Close:    Set d = Nothing
    r.Close:    Set r = Nothing
    MsgBox "Готово"
    Exit Sub
err1:
    MsgBox Err.Description
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Объединение строк в столбцы / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]