powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Импорт данных из экселя а эксель
16 сообщений из 41, страница 2 из 2
Импорт данных из экселя а эксель
    #36456914
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в этом коде есть одна кривизна, когда я реализовывал не смог найти решение.
Подсчет записей и столбцов в рекордсете не прокатывает также как в DAO.

Может старожилы упростят мне этот момент, хотя можно самому порыскать в иннете
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36456957
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Shamanus

я прошу прощения, но эти циклы:
Код: plaintext
1.
2.
3.
4.
5.
For i =  1  To UBound(Massiv,  1 )
    For j =  1  To UBound(Massiv,  2 )
        Sheets( 1 ).Cells(i, j) = Massiv(i, j)
    Next j
Next i
End Sub
вполне нормально заменяются на такую строку:
Код: plaintext
Sheets( 1 ).Range(Cells( 1 ,  1 ), Cells(UBound(Massiv,  1 ), UBound(Massiv,  2 ))).Value = Massiv

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36456978
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

спасибо, не думал об этом.
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36457066
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чего то я затупил тогда, у ADO же тоже есть Fields Count


Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
Sub GetExcel(strSourceFile As String, strSQL As String, ByRef Massiv() As Variant)
Dim cn As ADODB.Connection
Dim rstTemp As ADODB.Recordset

Set cn = New ADODB.Connection
cn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DriverId=790;ReadOnly=True;" & "DBQ=" & strSourceFile & ";"
Set rstTemp = New ADODB.Recordset

rstTemp.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
Erase Massiv
    x =  1 
        With rstTemp
        Do While Not .EOF
                    .MoveNext
                      x = x +  1 
            Loop
    End With
ReDim Massiv( 1  To x,  1  To rstTemp.Fields.Count) As Variant
rstTemp.MoveFirst
                For i =  0  To rstTemp.Fields.Count -  1 
                Massiv( 1 , i +  1 ) = rstTemp.Fields(i).Name
                Next i
            
            For j =  0  To x -  2 
                For i =  0  To rstTemp.Fields.Count -  1 
                Massiv(j +  2 , i +  1 ) = rstTemp.Fields(i)
                Next i
            rstTemp.MoveNext
            Next j

rstTemp.Close
cn.Close

Set rstTemp = Nothing
Set cn = Nothing
End Sub


Sub DOIT()
Dim strSourceFile As String, strSQL As String, Massiv() As Variant
strSourceFile = "E:\Test\1.xls"
strSQL = "SELECT * FROM `Лист1$`;"

Call GetExcel(strSourceFile, strSQL, Massiv)
Sheets( 1 ).Range(Cells( 1 ,  1 ), Cells(UBound(Massiv,  1 ), UBound(Massiv,  2 ))).Value = Massiv


End Sub

А вот аналога CountRow в нете не нашел. Если кто подскажет буду очень признателен.
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36457108
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Потестировал, работает, если число столбцов источника <256, если заполнены все 256 столбцов хоть в одном ряду ругается в строке
rstTemp.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
Почему?
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36457117
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Потестировал, работает, если число столбцов источника <256, если заполнены все 256 столбцов хоть в одном ряду ругается в строке
rstTemp.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
Почему?

вот уж черт его знает,
проверил и правда ругается. Говорит определено слишком много полей.
Нужно покопать, нет ли ограничения на размерности рекордсета
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36458115
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее это ограничение Excel 2003, не более 256 столбцов.
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36458714
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр ВеликийShamanusАлександр Великий
Желательно создать процедуру, запрос в SQL Query Analyzer. Который будет импортировать данные с экселя и сравнивать их с запросом из базы данных

ну если так то тут помочь не смогу
могу помочь в импорте данных из MSSQL в Excel
или из Excel в Excel (без открытия файла)
Вот давайте объясните ситуацию из Excel в Excel (без открытия файла).а это я кому написал?????????
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36459651
Как можно столбцы в SQL записать одной строкой?
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36459668
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр ВеликийКак можно столбцы в SQL записать одной строкой?

вы имеете ввиду склеить?
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36459715
Shocker.ProАлександр ВеликийКак можно столбцы в SQL записать одной строкой?

вы имеете ввиду склеить?
например вот так выглядела, как правая третья строчка
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36459717
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36459749
Данные в одном столбце будут склеиваться, групируясь по наименованию. Просто Sum для текстовых значений не работает, поэтому не знаю как это сделать.
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36459756
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Великийнапример вот так выглядела, как правая третья строчка

Я не вникал в эту конкретную задачу, поэтому пример склейки столбца в строку на примере Northwind для синтаксиса MSSQL

Код: plaintext
1.
2.
3.
4.
declare @t varchar( 8000 )
use Northwind
set @t=''
select @t=@t + Country + ', ' from Customers group by Country order by Country
select @t
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36460218
Одной строкой получается сделать, но как сделать есои у меня таких 1000 записей и более
вот то что я набил
declare @t varchar(8000)
set @t=' '
select nc,@t=@t + nzak + ', ' from prz group by nc
select @t
пишет ошибку Msg 141, Level 15, State 1, Line 3
A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.

Что я делаю не так?
...
Рейтинг: 0 / 0
Импорт данных из экселя а эксель
    #36460277
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр ВеликийОдной строкой получается сделать, но как сделать есои у меня таких 1000 записей и более
вот то что я набил
declare @t varchar(8000)
set @t=' '
select nc,@t=@t + nzak + ', ' from prz group by nc
select @t
пишет ошибку Msg 141, Level 15, State 1, Line 3
A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.

Что я делаю не так?

select nc вы делаете не так
В тексте ошибки четко указано - нельзя комбинировать запрос на программирование переменных и на выдачу данных в одном запросе.

Вообще, вам с этим вопросом в ветку SQL, так как я работаю с 2000-м, возможно в 2005 или 2008 уже есть операция агрегатной конкатенации строк.

И для начала почитайте там FAQ
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Импорт данных из экселя а эксель
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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