Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2009, 09:59   #11
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Итак знакомая попросила сделать для военкомата учет данных.
Я содрал из стандартного набора в Делфи файл biolife.db в свою папку. Перебрал все поля под мои (имя, фамилия, отчество, ВУС, год рождения, род войск и прочее, около 20 полей, почти все строковые, только порядковый номер - Integer). Добавил стандартные операции - типа стереть, добавить. Чтобы ее видеть кинул DBGrid, переход назад, вперед.
Пробовал формировать статистику (типа посчитать сколько матросов, прапорщиков и прочее) - это получается. Вопрос встал при импортировании данных из Экселя (раньше учет велся там, но были постоянные проблемы - поставит матрос с пробелом или пишет матросс и он уже не считается, сейчас в выпадающем списке, ошибок должно быть меньше).
Теперь импорт получается, но не могу, млин, добавлять данные. То есть допустим стер несколько записей, остались свободные номера, но мне нужно определить порядковый номер, под которым будет добавляться запись.
Например, стер 50-го красноармейца. Как мне потом узнать что этот номер свободный, чтобы на него запихнуть в следующий раз другого?
Сразу скажу, что порядок расположения записей, значения не имеет.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.04.2009, 10:17   #12
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

я признаться и не знал о biolife.db, какая-то видимо демовская бд. Utkin, скажите для начала, вы в ФоксПро собираетесь программу разрабатывать, сколько планируется пользователей с ней работать?
фЁдОр вне форума Ответить с цитированием
Старый 17.04.2009, 10:23   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Utkin
Прикинусь профи и посоветую следующее:
Первое: Если уж нужно работать с DBF лечше поставить на комп Visual FoxPro 6 или 8, появится провайдер, который можно прикрутить к проге на делфи через ADO компоненты. При этом ты легко сможеш импортировать XLS файлы, либо через само ФоксПро либо запросами через ADO. Всетки никто с DBF не работает луче чем Фокс.
Второе: Могу порекомендовать тебе вот такую статейку:http://pblog.ru/?p=364. Вдруг пригодится.

А то что ты сделал - чепуха. Нестабильно работать будет, и гемору много наживеш при проектировании, так что в твоем положении лучший выход: VisualFoxPro+ADO+Delphi
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2009, 13:53   #14
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Да я практически уже закончил . Извиняюсь - посмотрел это Парадокс. Единственная проблема - это генерация уникального порядкового номера, поскольку в базе могут быть различные номера (если будут удалять из середины, а вероятность такого события очень велика, в сравнении с крайними записями).
Мне без разницы сам номер, единственное, что меня интересует, это генерация уникального номера, несуществующего в текущей базе.
Имеются ли для этого какие-либо встроенные, скажем в Table, средства?
Я смог импортировать данные из текстового файла, это оказалось не сложно, моя ошибка заключалась в том, что я сделал ключеывм полем фамилию, а она может повторяется, отсюда выпрыгивала ошибка.
В самой Делфи она не отлавливалась, но когда я скопилировал заведомо ошибочный проект, я смог отследить участок кода (в обертке try), который являлся источником ошибки.

Поддержка сети не планируется (там всего два компа, оба используются в качестве печатных машинок). В общем одно рабочее место .

P.S. Там еще много учебных баз данных.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 17.04.2009 в 13:55.
Utkin вне форума Ответить с цитированием
Старый 20.04.2009, 08:49   #15
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Пробовал генерировать Integer случайным образом, все равно возникает ошибка. Очевидно необходимо добавлять по порядку...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.04.2009, 10:52   #16
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Utkin, есть специальное автоинкрементное поле, которое автоматически считает количество записей. http://programmersforum.ru/showthread.php?t=45725
фЁдОр вне форума Ответить с цитированием
Старый 20.04.2009, 11:35   #17
KingMaker
 
Регистрация: 28.03.2009
Сообщений: 5
По умолчанию

БД жестокая вещь х_Х
Решаю задачи на программирование в Delphi.
Работаю не для денег, а для опыта, поэтому возможно бесплатно (но от небольшого гонорара не откажусь=)). ICQ - 489361746 Мыло - kingmaker93@mail.ru
KingMaker вне форума Ответить с цитированием
Старый 20.04.2009, 13:28   #18
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
....
Теперь импорт получается, но не могу, млин, добавлять данные. То есть допустим стер несколько записей, остались свободные номера, но мне нужно определить порядковый номер, под которым будет добавляться запись...
В качестве варианта. В свое время в FoxPro при работе в многопользовательском режиме рекомендовали следующий финт:
Записи вы физически не удаляете, а обнуляете значения полей, оставляя нетронутым номер. В обычном виде вы делаете их невидимыми, а при добавлении новых данных вначале просматриваете таблицу на наличие пустых записей и, если таковые имеются - заполняете данными первую попавшуюся пустую запись. Если же пустых записей нет, то добавляете новую.

Хотя, автоинкремент в Paradox, как предложил фЁдОр конечно же, вне конкуренции.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Старый 20.04.2009, 15:48   #19
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Про автоинкремент я уже догадался (стал искать альтернативу для Integer), но данные все равно не добавляются. По ходу дело в другом. Пишет ошибку в какой-то dll.
Переделал функции так, что бы добавлялись данные как из файла так и из специальной формы через одну функцию, но это не помогает.
Данные через файл добавляются, вручную нет. Причем если вручную я заполняю все поля сам ручками, все вносится нормально. Если только фамилию (остальное автоподстановка - строка 'Нет данных', самое маленькое поле 15 символов, самое большое - 60), то выскакивает ошибка. Начинаю отслеживать через breakPoint и ошибка вываливается, даже если ничего не происходит, просто нахожусь в точке останова. Это может быть связано с базами данных или причинам в другом?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.04.2009, 18:33   #20
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Всем спасибо, решил проблему, тем что пересоздал проект и перенес старое содержимое туда. Все заработало . Причины такого поведения найти не могу.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка выполнения sql запроса при изменении данных XATAB БД в Delphi 4 28.02.2009 15:44
Ошибка при приёме данных ServerSocket'ом Terran Работа с сетью в Delphi 2 25.01.2009 12:20
ADO. Запрос на добавление. Ошибка. Son БД в Delphi 13 09.01.2009 20:15
Добавление данных OLEGSENT БД в Delphi 3 17.06.2008 23:47
Как импортировать поля с Одного TTable в другой TTable Alex_7_4_1 БД в Delphi 3 09.05.2008 18:12