Как обновить всего лишь одну запись вместо всего набора данных
Не хотелось переоткрывать когда можно просто сделать так чтобы эти значения получались прямо во время редактирования или вставки.
Цитата: russian_style
использую TADOQuery (С++Builder). когда добавляю запись, значения по умолчанию и автоинкрементные поля не высвечиваются. Эти данные высвечиваются когда заново переоткрываю TADOQuery.
Не хотелось переоткрывать когда можно просто сделать так чтобы эти значения получались прямо во время редактирования или вставки.
Не хотелось переоткрывать когда можно просто сделать так чтобы эти значения получались прямо во время редактирования или вставки.
На форуме наказывают за создание двух тем посвященных одному и тому же вопросу с единственной целью привлечь внимание. Вам помоему сказали ясно - что вам надо сделать - и никто не будет за вас читать справку и литературу.
Тема и содержание не соответствуют, разберитесь что Вы хотите.
Не поленитесь прочитайте правила постинга в раздел и воспользуйтесь поиском по форуму!
Вопрос уже обсуждался.
База у меня АССESS. Язык С++Builder. Соединяюсь через АДО.
Так как я много буду переделывать прогу. решил отделить логику от реализации. Я создаю классы имитирующие объекты хранящиеся в БД. для обращения к БД эти классы пользуются методами считывания и записи в БД. Что бы сделать более универсальный способ обращения к БД пользуюсь SQL. В случае замены БД на какую нибудь серверную POSTGRE или MySQL я буду менять только методы считывания и записи в БД.
Натыкаюсь на мелкие проблемы с немелкими решениями.
Представьте что ваш DATASET скачал данные с БД. теперь вы добавляете новую запись и запись успешно добавлена. В этой записи есть инкрементное поле и поле со значениями по умолчанию. Как вы догадались эти поля заполнились значениями на серверной стороне, но на вашем DATASETе эти изменения не отражены. В результате чего если вы попытаетесь изменить только что добавленную и сохраненую запись АДО будет ругаться что не найдена строка для изменения. в АДО РЕКОРДСЕТАХ есть динамические свойства Update Criteria и Update Resync они решили бы мою проблему. Но до них почемуто из С++ Builder не добраться. Я считал С++ Builder мощным языком и она ощутима но здесь чувствую слабину и никто не знает что можно сделать. Думаю с этим как я понял сталкивались не только я. Но вразумительных ответов без использования Обжект Паскаля нет. Думаю вам будет это интересно поковыряться. Я тоже ковыряюсь но пока return 0.
Может заранее заложить избыточность, что бы потом было работы меньше?
Я так понял Вы пока работатет локально, но ведь и MySQL можно работать локально, т.е. БД в сети видна не будет. Все Ваши ранее спроектированные классы
потребуют минимальной доработки при пуске клиент-серверной структуры, чего не могу сказать о переходе с одного двигла на другой.
Для Access существует Jet.
Ваша проблема с DataSet очевидна, Вы пытаетесь изменить запись которая в клиентском Dataset'е присутствует, а в серверном нет. Перед тем как изменять запись перешлите её в саму БД, а потом уже её изменяйте. Уйдите от Всех компонентов типа DB получайте все данные при помощи SQL запросов, обрабатывайте и отображайте при помощи самых простых элементов типа StringGrid и т.д.
Свойства которые Вы описали я не нашёл в декларации, но если там такое имеются и они протекченные Вам нужно создать предка и сделать эти свойства пабликами.
С++ мощный язык Builder мощная среда разработки просто нужно чётко знать что и как Вы будете делать!
Настоятельно рекомендую Вам книги по языку SQL и С++Builder6
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=413
Попробуйте сделать это на С++ Builder. Вы будете неприятно удивлены.
Попробуйте сделать это на С++ Builder. Вы будете неприятно удивлены.
Вообщем у Вас достаточно информации для реализации... дерзайте!