|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
Добрый день. Есть запрос на вывод данных в Excel: sq = "SELECT dbo_DATA.DATE, dbo_DATA.DATE, [Спр_кодов 80020 и ASKP].[Наименование объекта], dbo_DATA.REGID, [Спр_кодов 80020 и ASKP].[Тип объекта], [Спр_кодов 80020 и ASKP].[Уровень напряжения], [Спр_кодов 80020 и ASKP].Направление, Спр_ЧПН.Час, dbo_DATA.COUNT, dbo_DATA.H1, dbo_DATA.H2, dbo_DATA.H3, dbo_DATA.H4, dbo_DATA.H5, dbo_DATA.H6, dbo_DATA.H7, dbo_DATA.H8, dbo_DATA.H9, dbo_DATA.H10, dbo_DATA.H11, dbo_DATA.H12, dbo_DATA.H13, dbo_DATA.H14, dbo_DATA.H15, dbo_DATA.H16, dbo_DATA.H17, dbo_DATA.H18, dbo_DATA.H19, dbo_DATA.H20, dbo_DATA.H21, dbo_DATA.H22, dbo_DATA.H23, dbo_DATA.H24, dbo_DATA.H25, dbo_DATA.H26, dbo_DATA.H27, dbo_DATA.H28, dbo_DATA.H29, dbo_DATA.H30, dbo_DATA.H31, dbo_DATA.H32, dbo_DATA.H33, dbo_DATA.H34, dbo_DATA.H35, dbo_DATA.H36, dbo_DATA.H37, dbo_DATA.H38, dbo_DATA.H39, dbo_DATA.H40, dbo_DATA.H41, dbo_DATA.H42, dbo_DATA.H43, dbo_DATA.H44, dbo_DATA.H45, dbo_DATA.H46, dbo_DATA.H47, dbo_DATA.H48 " sq = sq & "FROM (dbo_DATA LEFT JOIN Спр_ЧПН ON dbo_DATA.DATE = Спр_ЧПН.Дата) INNER JOIN [Спр_кодов 80020 и ASKP] ON dbo_DATA.REGID = [Спр_кодов 80020 и ASKP].Идентификатор " sq = sq & "WHERE (((dbo_DATA.Date)>=#" & f_date_am(d1) & "# And (dbo_DATA.Date)<=#" & f_date_am(d2) & "#) AND (([Спр_кодов 80020 и ASKP].[Отчет, где используется])=""баланс""));" Set zap = CurrentDb.OpenRecordset(sq) If zap.RecordCount <> 0 Then zap.MoveFirst While zap.EOF <> True For i = 1 To 56 j = 2 + zap.RecordCount l2.Cells(j, i) = zap.Fields(i).Value Next i zap.MoveNext Wend End If Set zap = Nothing И все вроде хорошо, все работает. Но выводит вез сортировки по нужны полям. Добавляю последней строкой сортировку по нужным полям: sq = sq & "ORDER BY dbo_DATA.DATE, dbo_DATA.REGID;" И начинаются проблемы. Поскольку recordcount не считает число записей до обращения к ним. Из- за добавления строки с сортировкой : sq = sq & "ORDER BY dbo_DATA.DATE, dbo_DATA.REGID;" , обращение ко всем записям произошло. И нарушаются параметры вывода в цикле Set zap = CurrentDb.OpenRecordset(sq) If zap.RecordCount <> 0 Then zap.MoveFirst While zap.EOF <> True For i = 1 To 56 j = 2 + zap.RecordCount l2.Cells(j, i) = zap.Fields(i).Value Next i zap.MoveNext Wend End If Set zap = Nothing Ведь каждый раз zap.RecordCount не становится на один больше ,а это теперь просто конечное число записей. Какой выход из ситуации??? Попытался переписать цикл: Set zap = CurrentDb.OpenRecordset(sq) If zap.RecordCount <> 0 Then zap.MoveFirst While zap.EOF <> True For i = 1 To 56 For j = 3 To zap.RecordCount l2.Cells(j, i) = zap.Fields(i).Value Next j Next i zap.MoveNext Wend End If Set zap = Nothing Но проблема в другом условие While zap.EOF <> True никогда не выполняется. цикл получается бесконечный. Как решить вопрос с сортировкой по первому пути? или как поставить условие While по второму пути? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 13:16 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
mikle08es2Добрый день. Есть запрос на вывод данных в Excel: Код: sql 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.
mikle08es2И все вроде хорошо, все работает. Но выводит вез сортировки по нужны полям. Добавляю последней строкой сортировку по нужным полям: Код: sql 1.
mikle08es2И начинаются проблемы. Поскольку recordcount не считает число записей до обращения к ним. Из- за добавления строки с сортировкой : Код: sql 1.
, обращение ко всем записям произошло. И нарушаются параметры вывода в цикле Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
mikle08es2Ведь каждый раз zap.RecordCount не становится на один больше ,а это теперь просто конечное число записей. Какой выход из ситуации??? Попытался переписать цикл: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
mikle08es2Но проблема в другом условие While zap.EOF <> True никогда не выполняется. цикл получается бесконечный. Как решить вопрос с сортировкой по первому пути? или как поставить условие While по второму пути? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 13:59 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
DarkMan, не помешал бы пробел перед order sq = sq & " ORDER BY dbo_DATA.DATE, dbo_DATA.REGID;" ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 15:17 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
DarkMan, да и это не логично Set zap = CurrentDb.OpenRecordset(sq) If zap.RecordCount <> 0 Then zap.MoveFirst j=2 do While zap.EOF =false j=j+1 For i = 1 To 56 l2.Cells(j, i) = zap.Fields(i).Value Next i zap.MoveNext loop End If Set zap = Nothing ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 15:20 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКАDarkMan, не помешал бы пробел перед order sq = sq & " ORDER BY dbo_DATA.DATE, dbo_DATA.REGID;" Вы меня не прекращаете радовать своим чувством юмора. Если Вы чмели заметить ,я лишь отредактировал сообщение ТС , заключив код в тэги CSV . :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 15:31 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
Пенсионерка, Кстати чего и Вам желал бы. Сами понимате,что отредактированные сообщения оегче читать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 15:33 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
mikle08es2Но проблема в другом условие While zap.EOF <> True никогда не выполняется. цикл получается бесконечный. А ты то хоть смотрел что в zap.RecordCount перед тем как его использовать ? В твоем варианте там может быть все что угодно и даже минус 1 Как минимум не хватает MoveLast Замечания к RecordCount ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 15:37 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
mikle08es2, Выдержка из HELP:" Свойство RecordCount не показывает, сколько записей содержится в динамическом или статическом объекте Recordset до обращения ко всем записям. " Вы же обращаетесь в процедуре к этому свойству(которое до получения его значения будет при наличии записей=1. Позтому j = 2+ zap.RecordCount аналогично j=2+1.) и вообще можно и такую конструкцию: Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 16:23 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
вернее так: a=1 j=3 'как я понял это столбец Do Until rs.EOF L2.cells(a,j)=RS!Fields(a)' или RS!Fields(a+самиОпределите) a=a+1 rs.MoveNext Loop ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 16:50 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
mikle08es2Поскольку recordcount не считает число записей до обращения к ним. какая гадость, эта ваша заливная рыба © ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 16:56 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
mikle08es2, можно решить проблему так Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
чем удобно - это может быть накопительный файл - куда ссыпаются данные в постоянном потоке и при этом свежие данные всегда сверху и нумерация идет по нарастающей. и лучше все таки избавиться от таких перлов: "...dbo_DATA.DATE, dbo_DATA.DATE..." "dbo_DATA.COUNT" - не нужно использовать зарезервированные слова ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 17:06 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
vmag, Там число записей, около 20 000 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 23:46 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, Спасибо, как всегда помогли. Все гениальное просто, особенно когда хорошо в чем то разбираешься. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2019, 00:18 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
alecko, спасибо, вроде тоже работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2019, 00:19 |
|
Recordcount в цикле. определение количества записей recordset.
|
|||
---|---|---|---|
#18+
1. У Recordset-а есть св-во AbsolutePosition. Показывает значения от 0 до RecordCount-1. В вашем случае он бодходит вам идеально. 2. Зачем вы, вообще, пошли по пути поячеечного внесения данных? Это, как минимум, долго. Если нет МЕМО полей, то метод листа CopyFromRecordset зальет вам все данные одной строкой кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2019, 11:13 |
|
|
start [/forum/topic.php?fid=45&msg=39762259&tid=1610901]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 176ms |
0 / 0 |