ДБЭдит и ТДБФ... проблема...

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

ДБЭдит и ТДБФ... проблема...

Сообщение qivi » 25.03.2009 15:27:31

Сделал простой примерчик, своего рода эксперемент:

Положил на форму ТДБФ, ДБЭдит и ДБГрид (ну и соединил всё это в кучку)... ну и пару кнопок кинул на форму.
При нажатии на одну кнопку создаётся таблица с одним единственным полем на 20 символов, в ДБЭдите ставлю ограничение на 10 символов , при нажатии на вторую выполняется следующий код:

Код: Выделить всё
dbf1.Insert;
dbf1.Post;


Приэтом получается не совсем желательный результат:
1. В таблице всегда появляется одна лишняя пустая строка
2. Если я в гриде выделю не её, невзирая на инсерт он её отредактирует.

Я же ожидал(хотел) получить следующий результат: что б у меня небыло постоянно этой лишней строки, а нажатие на вторую кнопку приводило к образованию в конце таблицы новой строки и запись в неё содержимого ДБЭдитов (ну или одного ДБЭдита, в случае с данным примером)...
Это можно сделать какой то стандартной функцией ТДБФ или нужно несколькими? И как это вообще правильно делается?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: ДБЭдит и ТДБФ... проблема...

Сообщение grigoreo » 27.03.2009 09:07:01

Это можно ограничить или эвентами у набора данных, или не используй DBEdit используй простой едит, а когда уже уверен в вводе то в событии добавочной кнопки сделай Append или insert новой строки и ее определение по нужным полям

далее если ты редактируешь таблицу с других контролов без DBGrid переведи DBGrid в режим ReadOnly

:)
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

Re: ДБЭдит и ТДБФ... проблема...

Сообщение v-t-l » 27.03.2009 12:10:53

Когда ты начинаешь вводить данные в пустую таблицу, новая строка создается автоматически, поэтому dbf1.Insert вставляет еще одну пустую строку.
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: ДБЭдит и ТДБФ... проблема...

Сообщение qivi » 27.03.2009 17:02:21

Да... я уже догодался что он как то вот так...

А как обычно то люди делают дбэдит, так сказать правильно? Что ли каждый раз перед записью прокручивать таблицу вниз а потом тока делать запись?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: ДБЭдит и ТДБФ... проблема...

Сообщение grigoreo » 28.03.2009 11:58:57

qivi писал(а):Да... я уже догодался что он как то вот так...

А как обычно то люди делают дбэдит, так сказать правильно? Что ли каждый раз перед записью прокручивать таблицу вниз а потом тока делать запись?


Все зависит от того как ты хочешь работать с базой навигационым способом или реляционым, в первом случае можно добавлять запись через Append, в отличии от inserta она добавляется в конце таблице , при инсерте добавляется перед текущей записью набора данных,

реляционый способ т.е использую язык запросов SQL (конструкция 'insert into'), добавляет строку зачастую в конец таблицы

выбор способа зависит от тебя считается что реляционая модель более совершена, но если у тебя маленький локальный проект или сетевой файл серверный не сильно нагруженый конектами то используй навигационый,хотя если планируешь что то серьезное планируй сразу реляционый, иначе потеряешь лишнее время
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

Re: ДБЭдит и ТДБФ... проблема...

Сообщение alexs » 28.03.2009 13:41:26

grigoreo писал(а):реляционый способ т.е использую язык запросов SQL (конструкция 'insert into'), добавляет строку зачастую в конец таблицы

В реляционых базах данных понятие конец таблицы - безсмысленно.
Это всёж не DBF.
Там есть конец выборки. И он определяетя условием сортировки, которое ты задаёшь при выборке.

Поведение наследников от TDataSet при работе с SQL запросами - это всего лиш особенности lazarus/delphi. На самом то деле в этих наследниках работа всегда происходит над внутренним локальным буфером. Но он - это не сама таблица SQL сервера.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

Рейтинг@Mail.ru