![]() |
|
|
![]()
|
|
| ADAM83 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 13.1.2006 Репутация: нет Всего: нет |
Здравствуйте эксперты.
БД: Mysql Компоненты: ADO + DBGridEh Почему нумерация строк начинается с -1, я создаю новое поле в дельфе и указываю что оно вычисляемое ("нумерация" строк). раньше использовал MySQLDAC и все было Ок. Как сделать чтоб нумерация строк начиналась с 1. Спасибо заранее. |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| ADAM83 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 13.1.2006 Репутация: нет Всего: нет |
У меня после соединение с бд MySQL в DBGridEh отображается таблица.
Теперь создал новое поле (Num), вычисляемое, чтоб оно отображало нумерацию записей (строк) в таблице. Далее идет код:
И в итоге в столбце ADOTable1Num записи начинается с -1. Почему? |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 3 Всего: 13 |
Нумерация должна начинаться с 1-й. Номер строки не должен становиться равным -1 ни при каких известных мне обстоятельствах. Скорее всего, значение поля ADOTable1Num меняется еще где-то. Попробуй создать чистый проект с таким же вычисляемым полем и посмотри чему будет равняться значение этого поля в нем. Потом в отладчике поставь точку останова на 3-й строке твоего примера и посмотри, чему будет равняться значение ADOTable1.RecNo в нем. Должно быть значение 1 -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| ADAM83 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 13.1.2006 Репутация: нет Всего: нет |
Fedia, я попробовал как ты сказал, всеравно так получается.
Ты можешь создать маленькое приложение и попробовать сам, если получится плиз скинь мне. Может я не правильно делаю. Эту же процедуру повторил с помощью другого компонента (MySQLDAC) там уже строки начинаются с 1. |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 3 Всего: 13 |
ADAM83, твоя правда. Сейчас попробовал подключиться к MySql и тоже в первой строчке получил - 1. Для исправления этого глюка могу предложить два варианта:
1. Изменить обработчик события OnCalcField на
2. Как ты уже и пробовал: использовать для подключения др. компоненты. Я предпочитаю zeosdbo-5.4.1. Они специально заточены под СУБД MySql и работают пошустрее, чем ADO. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| ADAM83 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 13.1.2006 Репутация: нет Всего: нет |
Fedia, спасибо за код, самому догадаться можно было. У меня просто подозрение было что я может что-то не так делаю. В общем не понятно почему адо так себя ведет...
Как ты предложил, zeosdbo пробовал использовать но там же помоему много надо прописовать, а с адо я уже не раз работал. Но до этого подключался к MSSQL-у и поле, нумерующее строки в таблице не понадобилось. Спасибо всеравно. Но интерес по основному вопросу все таки остается, если кто знает ответ, создайте плиз новую тему по этому вопросу, буду блогадарен. |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 3 Всего: 13 |
Это понятно, просто ты спросил: я ответил.
Меньше чем в ADO, причем значительно. Тем более что ADO необходимы ODBC драйвера для MySql, а zeosdbo нет. Но это дело вкуса. Это то зачем ? Может в этой ветке и ответит кто -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| ADAM83 |
|
||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 13.1.2006 Репутация: нет Всего: нет |
Fedia,
Я для подключение к MySQL скачал драйвер ODBC (MyODBC)
Согласен с тобой мне АДО понравился.
Да я просто думал, что если отметишь тему как решенную, то никто не сможет ответить. |
||||||||||||
|
|||||||||||||
| SergeBS |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
ADAM83,
Получение № строки в гриде: 1. RxLib - RxDBGrid - там оно готовое 2. DBGrid - создаешь наследника и свойство row выносишь из protected в public. |
|||
|
||||
| ADAM83 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 13.1.2006 Репутация: нет Всего: нет |
SergeBS,
а в каком месте указывать это, что то я в RxDBGrid-е не нашел
а можно по подробнее что то не догнал но буду пробовать |
||||
|
|||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 3 Всего: 13 |
Тебе предлагают создать свой компонент Grid на основе стандартного TDBGrid-а. ИМХО, ради нумерации строк так заморачиваться не стоит. Не говорю, что это сложно, просто это: "из пулемета по воробьям". SergeBS, сейчас проверил. Свойство Row выносить в public не имеет смысла. Во время выполнения OnCalcField он имеет всегда одно значение, равное номеру текущей строки в гриде. Это сообщение отредактировал(а) Fedia - 11.8.2006, 09:39 -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| SergeBS |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
ADAM83,
Fedia, Прощенья просим-с. Это row в RxDBGrid - № выбранной строки. И толку в результате 0. Но как-то же я это когда-то сделал. Буду искать. |
|||
|
||||
| ADAM83 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 13.1.2006 Репутация: нет Всего: нет |
SergeBS, я пока наверно буду использовать метод который Fedia предложил
Если будут еще ответы буду рад. |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 3 Всего: 13 |
ADOTable1Num.AsInteger:=abs(ADOTable1.RecNo);
-------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |