|
|
|
Как подсчитать колличество записей......
|
|||
|---|---|---|---|
|
#18+
Работаю в С++ Builder и БД Oracle. Подсоединяюсь к БД через компоненты ODAC. Сделал фильтрацию, и теперь нужно мне подсчитать колл-во записей и вывести число в сообщении пользователю. Пробую зделать так: int chisl; for(T_full->First(); !T_full->Eof; T_full->Next()) { chisl++; } ShowMessage("Записей: " +chisl); Но чтот в переменной "chisl" всякая чушь, не числового формата. Как можно это реализовать по другому? Если можно примером, новичёк я еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2003, 11:07 |
|
||
|
Как подсчитать колличество записей......
|
|||
|---|---|---|---|
|
#18+
или int chisl=0; -Обнулить счетчик перед циклом или например: chisl = T_full->GetRecordCount(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2003, 11:29 |
|
||
|
Как подсчитать колличество записей......
|
|||
|---|---|---|---|
|
#18+
RecordCount не всегда хорошо использовать. Если будет выдавать неправилное значение, то пошли запрос select count(*) from table1 where <условия выборки> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2003, 11:43 |
|
||
|
Как подсчитать колличество записей......
|
|||
|---|---|---|---|
|
#18+
>Cauchy То есть, используя так: chisl = T_full->GetRecordCount(); может иногда выдавать не ту цифру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2003, 11:59 |
|
||
|
Как подсчитать колличество записей......
|
|||
|---|---|---|---|
|
#18+
>>ShowMessage("Записей: " +chisl); Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2003, 12:08 |
|
||
|
Как подсчитать колличество записей......
|
|||
|---|---|---|---|
|
#18+
<<может иногда выдавать не ту цифру? Да, это зависит от типа курсора. Может выдать -1. По-моему (точно не помню) когда односторонний курсор (только вперед). Курсор нужно всегда проверять, потому что при открытии коннекта тип курсора может измениться из-за настроек сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2003, 12:28 |
|
||
|
Как подсчитать колличество записей......
|
|||
|---|---|---|---|
|
#18+
Не оспаривая все что здесь сказано замечу что когда пишешь ShowMessage("Записей: " +chisl); ты складываешь строку с числом, вполне возможно что при этом число переводится в символ по АСКИ коду и его ты и видишь. проверь что так ShowMessage("Записей: " +IntToStr(chisl)); плучится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2003, 12:35 |
|
||
|
Как подсчитать колличество записей......
|
|||
|---|---|---|---|
|
#18+
Спасибо! ВСЕМ ответившим. Я вернулся к старому варианту у себя: int chisl =0; for(T_full->First(); !T_full->Eof; T_full->Next()) { chisl++; } ShowMessage("Записей: " +IntToStr(chisl)); Так как "T_full" -это не "OraTable", а "SmartQuery". Следовательно как я понял у него нет "GetRecordCount()", а писать запросом не знаю как у себя сделать. Переписывать заново запрос не хочеться. А в "T_full" - уже сделана выборка как нужно, и я просто в цикле просчитываю и все. Неудобство в том что таблица пересчитываеться еще раз. Изменил свой прежний код по совету "LAlex" и нормальнго все отображается. Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2003, 13:39 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=57&tid=2035942]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 383ms |

| 0 / 0 |
