Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL+ADO+DBGridEh, нумерация строк начинается с -1, почему? 
V
    Опции темы
ADAM83
Дата 29.7.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



Здравствуйте эксперты.
БД: Mysql
Компоненты: ADO + DBGridEh
Почему нумерация строк начинается с -1, я создаю новое поле в дельфе и указываю что оно вычисляемое ("нумерация" строк).
раньше использовал MySQLDAC и все было Ок.
Как сделать чтоб нумерация строк начиналась с 1.
Спасибо заранее. 
PM MAIL   Вверх
Alex
Дата 30.7.2006, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
ADAM83
Дата 5.8.2006, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



У меня после соединение с бд MySQL в DBGridEh отображается таблица.
Теперь создал новое поле (Num), вычисляемое, чтоб оно отображало нумерацию записей (строк) в таблице.
Далее идет код:
Код

procedure TForm1.ADOTable1CalcFields(DataSet: TDataSet);
begin
  ADOTable1Num.AsInteger := ADOTable1.RecNo;
end;
 
И в итоге в столбце ADOTable1Num записи начинается с -1.
Почему? 
PM MAIL   Вверх
Fedia
Дата 6.8.2006, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



Цитата
И в итоге в столбце ADOTable1Num записи начинается с -1.

Нумерация должна начинаться с 1-й. Номер строки не должен становиться равным -1 ни при каких известных мне обстоятельствах.  Скорее всего, значение поля ADOTable1Num меняется еще где-то. Попробуй создать чистый проект с таким же вычисляемым полем и посмотри чему будет равняться значение этого поля в нем. Потом в отладчике поставь точку останова на 3-й строке твоего примера и посмотри, чему будет равняться значение ADOTable1.RecNo в нем. Должно быть значение 1  smile


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
ADAM83
Дата 8.8.2006, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



Fedia, я попробовал как ты сказал, всеравно так получается.
Ты можешь создать маленькое приложение и попробовать сам, если получится плиз скинь мне.
Может я не правильно делаю.
Эту же процедуру повторил с помощью другого компонента (MySQLDAC) там уже строки начинаются с 1. 
PM MAIL   Вверх
Fedia
Дата 9.8.2006, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



ADAM83, твоя правда. Сейчас попробовал подключиться к MySql и тоже в первой строчке получил - 1. Для исправления этого глюка могу предложить два варианта:
1. Изменить обработчик события OnCalcField на
Код

  if ADOTable1.RecNo = -1 then
  ADOTable1Num.AsInteger:=1 else
  ADOTable1Num.AsInteger:=ADOTable1.RecNo;

2. Как ты уже и пробовал: использовать для подключения др. компоненты. Я предпочитаю zeosdbo-5.4.1. Они специально заточены под СУБД MySql и работают пошустрее, чем ADO.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
ADAM83
Дата 9.8.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



Fedia, спасибо за код, самому догадаться можно было. У меня просто подозрение было что я может что-то не так делаю. В общем не понятно почему адо так себя ведет...
Как ты предложил, zeosdbo пробовал использовать но  там же помоему много надо прописовать, а с адо я уже не раз работал.
Но до этого подключался к MSSQL-у и поле,  нумерующее строки в таблице не понадобилось.
Спасибо всеравно. Но интерес по основному вопросу все таки остается, если кто знает ответ, создайте плиз новую тему по этому вопросу, буду блогадарен.
PM MAIL   Вверх
Fedia
Дата 9.8.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



Цитата(ADAM83 @  9.8.2006,  10:20 Найти цитируемый пост)
самому догадаться можно было.

Это понятно, просто ты спросил:
Цитата(ADAM83 @  29.7.2006,  15:28 Найти цитируемый пост)
Как сделать чтоб нумерация строк начиналась с 1.

я ответил.
Цитата(ADAM83 @  9.8.2006,  10:20 Найти цитируемый пост)
Как ты предложил, zeosdbo пробовал использовать но  там же помоему много надо прописовать, а с адо я уже не раз работал.

Меньше чем в ADO, причем значительно.  Тем более что ADO необходимы ODBC драйвера для MySql, а zeosdbo нет. Но это дело вкуса.
Цитата(ADAM83 @  9.8.2006,  10:20 Найти цитируемый пост)
создайте плиз новую тему по этому вопросу, буду блогадарен.

Это то зачем ? Может в этой ветке и ответит кто smile


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
ADAM83
Дата 9.8.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



Fedia, 
Цитата

Цитата

Тем более что ADO необходимы ODBC драйвера для MySql, а zeosdbo нет


Я для подключение к MySQL скачал драйвер ODBC (MyODBC)

Цитата

Цитата

Но это дело вкуса.


Согласен с тобой мне АДО понравился.

Цитата

Цитата

Это то зачем ? Может в этой ветке и ответит кто 


Да я просто думал, что если отметишь тему как решенную, то никто не сможет ответить. smile 



PM MAIL   Вверх
SergeBS
Дата 10.8.2006, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



ADAM83, 
Получение № строки в гриде:
1. RxLib - RxDBGrid - там оно готовое
2. DBGrid - создаешь наследника и свойство row выносишь из protected в public.

PM MAIL   Вверх
ADAM83
Дата 11.8.2006, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



SergeBS, 
Цитата

1. RxLib - RxDBGrid - там оно готовое

а в каком месте указывать это, что то я в RxDBGrid-е не нашел

Цитата

2. DBGrid - создаешь наследника и свойство row выносишь из protected в public.

а можно по подробнее что то не догнал 
но буду пробовать
PM MAIL   Вверх
Fedia
Дата 11.8.2006, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



Цитата(ADAM83 @  11.8.2006,  07:54 Найти цитируемый пост)
. DBGrid - создаешь наследника и свойство row выносишь из protected в public.
а можно по подробнее что то не догнал 
но буду пробовать

Тебе предлагают создать свой компонент Grid на основе стандартного TDBGrid-а. ИМХО, ради нумерации строк так заморачиваться не стоит. Не говорю, что это сложно, просто это: "из пулемета по воробьям".

SergeBS, сейчас проверил. Свойство Row выносить в public не имеет смысла. Во время выполнения OnCalcField он имеет всегда одно значение, равное номеру текущей строки в гриде.

Это сообщение отредактировал(а) Fedia - 11.8.2006, 09:39


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
SergeBS
Дата 11.8.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



ADAM83, 
Fedia, 
Прощенья просим-с. Это row в RxDBGrid - № выбранной строки. И толку в результате 0. Но как-то же я это когда-то сделал. Буду искать.
PM MAIL   Вверх
ADAM83
Дата 14.8.2006, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 13.1.2006

Репутация: нет
Всего: нет



SergeBS, я пока наверно буду использовать метод который Fedia предложил 
Цитата

  if ADOTable1.RecNo = -1 then
  ADOTable1Num.AsInteger:=1 else
  ADOTable1Num.AsInteger:=ADOTable1.RecNo;


Если будут еще ответы буду рад. 
PM MAIL   Вверх
Fedia
Дата 14.8.2006, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



ADOTable1Num.AsInteger:=abs(ADOTable1.RecNo); smile


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.