|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Коллеги, добрый день! Подскажите, пожалуйста. Как импортировать данные, если в первом столбце под заголовком нет данных в каждой строке? Сделал импорт данных через ADO. Код: vbnet 1. 2.
Делаю запрос: Код: vbnet 1.
Когда в первом столбце под заголовком есть данные - всё нормально. Когда нет - виснет это дело. Допустим добавил для эксперимента " " (пробел) в каждую строку под заголовком, чтобы сказать "данные есть" - всё хорошо и работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 12:04 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Да, функция такая: Код: vbnet 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.
Вызов такой: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 12:08 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
help HDR = Yes "указывает что поставщик не будет включать диапазон ячеек (который может быть строка заголовка) первой строки в наборе записей ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 12:18 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Shocker.Prohelp HDR = Yes "указывает что поставщик не будет включать диапазон ячеек (который может быть строка заголовка) первой строки в наборе записей не, первая строка нужна так или иначе. Поставил No. Всё равно. Уточню ещё, что заголовки импортируются всегда. В первом столбце данных нет, а в -4м есть ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 12:23 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Структура файла для импорта такая. И в первмом столбце данных нет, даже пробелов. И вот тут глюк - зависает экцель. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 12:33 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
добавляю пробелы в первую колонку и всё нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 12:34 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Ivan33, Заголовки не должны быть пустые. Именно на это и намекал Shocker.Pro, как я полагаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 12:39 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
The_PristЗаголовки не должны быть пустые. Именно на это и намекал Shocker.Pro, как я полагаю.Извиняйте, файла не видел. Скорее всего именно из-за наличия пустых ячеек в первом столбце и спотыкается. Для БД первый столбец основополагающий(как правило там располагается нумерация полей). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 12:42 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
The_PristIvan33, Заголовки не должны быть пустые. Именно на это и намекал Shocker.Pro, как я полагаю. не, они у меня не пустые. они всегда есть. вопрос больше в том, как сделать, если уже во второй строке нет данных в первом столбце, но в других в той же строке есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 12:43 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
The_PristThe_PristЗаголовки не должны быть пустые. Именно на это и намекал Shocker.Pro, как я полагаю.Извиняйте, файла не видел. Скорее всего именно из-за наличия пустых ячеек в первом столбце и спотыкается. Для БД первый столбец основополагающий(как правило там располагается нумерация полей). ага, понял. ну а если таблица такая как у меня, то всё пропало? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 12:50 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Ivan33, Я выполнил твой запрос. Правда, в 2003 эквселе и к именованному диапазону. ----- Не люблю Progress OpenEdge ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 13:39 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
кладовщик-2, сделал и так -тоже работает Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 14:00 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
кладовщик-2Ivan33, Я выполнил твой запрос. Правда, в 2003 эквселе и к именованному диапазону. ----- Не люблю Progress OpenEdge именованного диапазона там нет :( голый файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 14:52 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
кладовщик-2Ivan33, Я выполнил твой запрос. Правда, в 2003 эквселе и к именованному диапазону. ----- Не люблю Progress OpenEdge спасибо. но там экцель 2007 и именованных диапазонов там не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 15:44 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Ivan33, а чо так? Открываешь эту книгу программно, программно же создаешь именованный диапазон, сохраняешь-закрываешь - и все. ADO+SQL. Как тебе вар-т? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 17:34 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Ivan33 спасибо. но там экцель 2007 и именованных диапазонов там не будет. Так правильней: Ivan33, а чо так? Открываешь эту книгу программно, программно же создаешь именованный диапазон, сохраняешь-закрываешь - и все - юзай ADO+SQL. Как тебе вар-т? ----- Не люблю Progress OpenEdge. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 17:37 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
кладовщикIvan33 спасибо. но там экцель 2007 и именованных диапазонов там не будет. Так правильней: Ivan33, а чо так? Открываешь эту книгу программно, программно же создаешь именованный диапазон, сохраняешь-закрываешь - и все - юзай ADO+SQL. Как тебе вар-т? ----- Не люблю Progress OpenEdge. вариант нормальный. но хотелось бы проще. два уже есть: 1. столбец с номерами идёт первым 2. или столбец с пробелами идёт первым думал, что я чего-то не знаю, а оно вона как получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 18:26 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Ivan33, Может от того что Вы функцию испоганили до неузнаваемости Public Function ADO_R_Dmitry(ByVal StrSql$, ByVal FilePath$, ByVal OutputRange As Range, _ ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean) '============================================================================== '*Описание функции : Возвращает набор записей Recordset с первой ячейки адреса, '* указанного диапазона. '*strSql - Конструкция SQL запроса. '* FilePath - Полный путь к файлу включая имя и расширение. '* OutputRange - адрес ячеки с которой начинается вывод данных. '* FieldsName - используются или нет заголовки столбцов (True - False) '* OutputFieldsName - вывод данных с заголовками или без (True - False), _ '============================================================================== '* Автор R Dmitry (Дмитрий Русак dg_rusak@mail.ru skype: RDG_Dmitry) | '* WM:_R269866874234 U144446690328 | '============================================================================== Dim sCon As String, FieldName As String Dim rs As Object, cn As Object Set rs = CreateObject("ADODB.Recordset") Set cn = CreateObject("ADODB.Connection") If FieldsName Then FieldName = "Yes" Else FieldName = "No" Select Case Val(Application.Version) Case Is < 12 sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _ & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";" Case Is >= 12 sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _ & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";" End Select cn.Open sCon If Not cn.State = 1 Then Exit Function Set rs = cn.Execute(StrSql) If Not FieldsName Then OutputFieldsName = False If OutputFieldsName Then For i = 0 To rs.Fields.Count - 1 OutputRange.Offset(0, i) = rs.Fields(i).Name Next Set OutputRange = OutputRange.Offset(1, 0) End If DoEvents OutputRange.CopyFromRecordset rs rs.Close: cn.Close Set cn = Nothing: Set rs = Nothing End Function ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 19:07 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Код: vbnet 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 19:18 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
R DmitryIvan33, Может от того что Вы функцию испоганили до неузнаваемости Public Function ADO_R_Dmitry(ByVal StrSql$, ByVal FilePath$, ByVal OutputRange As Range, _ ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean) '============================================================================== '*Описание функции : Возвращает набор записей Recordset с первой ячейки адреса, '* указанного диапазона. '*strSql - Конструкция SQL запроса. '* FilePath - Полный путь к файлу включая имя и расширение. '* OutputRange - адрес ячеки с которой начинается вывод данных. '* FieldsName - используются или нет заголовки столбцов (True - False) '* OutputFieldsName - вывод данных с заголовками или без (True - False), _ '============================================================================== '* Автор R Dmitry (Дмитрий Русак dg_rusak@mail.ru skype: RDG_Dmitry) | '* WM:_R269866874234 U144446690328 | '============================================================================== Dim sCon As String, FieldName As String Dim rs As Object, cn As Object Set rs = CreateObject("ADODB.Recordset") Set cn = CreateObject("ADODB.Connection") If FieldsName Then FieldName = "Yes" Else FieldName = "No" Select Case Val(Application.Version) Case Is < 12 sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _ & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";" Case Is >= 12 sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _ & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";" End Select cn.Open sCon If Not cn.State = 1 Then Exit Function Set rs = cn.Execute(StrSql) If Not FieldsName Then OutputFieldsName = False If OutputFieldsName Then For i = 0 To rs.Fields.Count - 1 OutputRange.Offset(0, i) = rs.Fields(i).Name Next Set OutputRange = OutputRange.Offset(1, 0) End If DoEvents OutputRange.CopyFromRecordset rs rs.Close: cn.Close Set cn = Nothing: Set rs = Nothing End Function ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 19:43 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
Ivan33, Там и копирайта то нет, просто испоганили, до нерабочего состояния )) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 19:58 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
R DmitryIvan33, Может от того что Вы функцию испоганили до неузнаваемости Public Function ADO_R_Dmitry(ByVal StrSql$, ByVal FilePath$, ByVal OutputRange As Range, _ ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean) '============================================================================== '*Описание функции : Возвращает набор записей Recordset с первой ячейки адреса, '* указанного диапазона. '*strSql - Конструкция SQL запроса. '* FilePath - Полный путь к файлу включая имя и расширение. '* OutputRange - адрес ячеки с которой начинается вывод данных. '* FieldsName - используются или нет заголовки столбцов (True - False) '* OutputFieldsName - вывод данных с заголовками или без (True - False), _ '============================================================================== '* Автор R Dmitry (Дмитрий Русак dg_rusak@mail.ru skype: RDG_Dmitry) | '* WM:_R269866874234 U144446690328 | '============================================================================== Dim sCon As String, FieldName As String Dim rs As Object, cn As Object Set rs = CreateObject("ADODB.Recordset") Set cn = CreateObject("ADODB.Connection") If FieldsName Then FieldName = "Yes" Else FieldName = "No" Select Case Val(Application.Version) Case Is < 12 sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _ & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";" Case Is >= 12 sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _ & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";" End Select cn.Open sCon If Not cn.State = 1 Then Exit Function Set rs = cn.Execute(StrSql) If Not FieldsName Then OutputFieldsName = False If OutputFieldsName Then For i = 0 To rs.Fields.Count - 1 OutputRange.Offset(0, i) = rs.Fields(i).Name Next Set OutputRange = OutputRange.Offset(1, 0) End If DoEvents OutputRange.CopyFromRecordset rs rs.Close: cn.Close Set cn = Nothing: Set rs = Nothing End Function ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 19:59 |
|
ADO и SELECT * FROM
|
|||
---|---|---|---|
#18+
R DmitryIvan33, Там и копирайта то нет, просто испоганили, до нерабочего состояния )) как умею, извините :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2013, 19:59 |
|
|
start [/forum/topic.php?fid=61&fpage=78&tid=2174769]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 311ms |
total: | 446ms |
0 / 0 |