| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Builder C++] Базы данных, ADO-технология |
| Автор: Varyen 20.12.2009, 19:09 | ||||||
| Всем здравствуйте! В-общем задание такое, составить программу на Билдер С++ которая будет работать с 4-мя таблицами (Приходный кассовый ордер, Информация о плательщиках, Информация о предприятиях, Бухгалтерские счета). Использовать необходимо dBase, желательно по ADO-технологии. При построении соединения через ADOConnection выбираю Microsoft OLE DB Provider for ODBC Drivers как поставщика, далее когда делаю connection string выбираю Microsoft dBase Driver, кажется так называется. И тут вот проблема возникла (причем боюсь возникнет ещё немеряно, при необходимости в этой же теме буду спрашивать совета) -
Не работает корректно - строка удаляется, но при повторном запуске программы все становится как было до удаления! Открывал таблицу через Database Desktop - строки удалены, но! В режиме редактирования в Десктопе порядковый номер строки ставится неправильно - если вся таблица пуста, он может например поставить №11, в зависимости от того сколько строк было до удаления в программном режиме. Помогает только Empty. Ещё одна проблема - при запуске проекта вылетает несколько ошибок с указанием на
сама ошибка собственно: Could not convert variant of type (Null) into type (String). с чем может быть связано? в таблице есть пустые ячейки, но это так и должно быть, что можно сделать чтобы ошибок этих не было? Очень прошу помочь, сроки сильно поджимают. Заранее благодарен за любую помощь. |
| Автор: Varyen 20.12.2009, 21:38 |
| Спасибо за подсказку, только вот узнать бы у кого-нить как всетаки удалять... Открыта имеете ввиду ADOTable->Active = true? это имеется... Но есть пустые ячейки. При запуске ехе-шника этих ошибок нет. |
| Автор: Данкинг 20.12.2009, 22:05 | ||
Есть компонент TDbf, но, насколько я знаю, на Билдер он встаёт криво, если вообще встаёт (т.е. он для Дельфи предназначен). У меня на Билдере в BDS 2006 он глючит, т.е. работать невозможно. Просто ->First не может выдавать подобной ошибки. Это же просто переход в начало. |
| Автор: Varyen 20.12.2009, 22:16 |
| Просто дело в том, что из-за этой неполадки с удалением сплошные ошибки идут в ходе редактирования строк, добавления новых... Но спасибо и на этом |
| Автор: Varyen 23.12.2009, 23:23 |
| Так и не нашел пока нигде как же в Билдере удалить строку из dBase.... Очень надеюсь что тут кто-нибудь знает И по поводу ошибки этой, если у кого было отпишите пожалуйста, как можно избавиться. |
| Автор: djamshud 23.12.2009, 23:32 |
| Когда-то в пыхе использовал DBase. Там после удаления записи нужно было делать что-то вроде sync'а, т.е. синхронизировать текущее программное представление таблицы с файлом. Тут вероятно то же самое. Посмотрите по списку API этой БД что-нибудь похожее. |
| Автор: Varyen 25.12.2009, 17:48 | ||||
| Перевел все под BDE, стало лучше только теперь вот с чем проблема, в ADOQuery сделал запрос
в простом Query жалуется на все что не лень, даже букву "ч" воспринимать не хочет...
и вот на эту самую важну строчку в запросе жалуется... может кто подсказать, что не так?) смысл в том, что есть таблица по приходно-кассовым ордерам и плательщикам, причем плательщики как юр. так и физ. лица, т.е. у кого-то заполнено поле TABEL и PAYER_NAME, у кого-то INN и COMP_NAME, а в запросе надо PAYER_NAME и COMP_NAME вписать в одно поле. |
| Автор: Varyen 27.12.2009, 00:54 | ||
вобщем если в эту тему ещё кто-то заглядывает...проект подходит к концу, но тут такая проблема неизвестно из-за чего: запрос по фильтрации по дате не обрабатывается, пишет parameter d_from not found.
извиняюсь если вопрос тупой, но мне как новичку не видно причины неработоспособности |
| Автор: Varyen 27.12.2009, 23:54 | ||
Попробовал на дату по-другому написать текст запроса:
пишет что не распознает .09 , в этом роде |
| Автор: Данкинг 28.12.2009, 00:00 |
| Какой StrToDate может быть в строке? Query1->SQL-> - это строка, а не дата. Добавлено через 2 минуты и 35 секунд К тому же в .dbf дата обозначается так: {^2009-12-25} |
| Автор: Varyen 28.12.2009, 00:24 |
| Спасибо! Посоветуйте тогда пожалуйста, как можно сделать в моем случае запрос по дате, чтобы выбирать строки от ... и до...? Без StrToDate тоже не работало, потому и решил попробовать дописать... |
| Автор: Данкинг 28.12.2009, 00:50 | ||
Конечно, пробовать я такую страсть не буду, пишу здесь:
|
| Автор: Varyen 28.12.2009, 02:15 |
| Неа, на слово Between жалуется :( |
| Автор: Данкинг 28.12.2009, 02:33 | ||
| Может, перед (Between скобку убрать всё же? Вообще в общем случае на самом фоксе вот такой запрос работает:
(ddd - это поле типа DATA) |
| Автор: Varyen 28.12.2009, 02:59 |
| И все равно не хочет обрабатывать... ни через параметры, ни вот так вот, с прямым указанием на MaskEdit... Маску __.__.__ не воспринимает в запросе :( |