Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Вниз

Сохранение НД   Найти похожие ветки 

 
Spawn   (2003-07-10 08:29) [0]

Разобрался с одной проблемой, а щас такая вот возникла:

Делаю изменения в DBGrid - все ок(Присутствует TIBUpdateSQL).
Вызываю стандартное событие из TActionList - DataSetPost и данные не сохраняются на сервере. Пробовал делать IBTransaction.Commit - тоже ни чего не сохрагяется. Свойство CachedUpdates у IBQuery стоит в True. SQL - запросы у IBUpdateSQL сгенерированны компонентом. В чем проблема? Заранее спасибо.


 
Spawn   (2003-07-10 08:31) [1]

При вызове же IBUpdateSQL.Apply(ukModify) возникает ошибка.


 
Zacho   (2003-07-10 08:34) [2]

Во-первых, делай IBQuery.ApplyUpdates вместо IBUpdateSQL.Apply(ukModify)
Во-вторых, выкинь IBQuery и используй IBDataSet


 
Spawn   (2003-07-10 08:47) [3]

Использую IBDataSet, при вызове IBQuery.ApplyUpdates возникает ошибка IBInterBaseError with message "internal error"(причем она возникает тоьлко в том случае, если добавить/изменить данные в DBGrid)


 
Spawn   (2003-07-10 08:48) [4]

То есть при вызове IBDataSet.ApplyUpdates;


 
Zacho   (2003-07-10 08:53) [5]


> Spawn © (10.07.03 08:47)

Ничего не понял, так у тебя IBDataSet или IBQuery ?
А вообще похоже на баг в IBX, попробуй поставить другую версию.


 
Spawn   (2003-07-10 08:54) [6]

IBDataSet у меня


 
Spawn   (2003-07-10 08:56) [7]

Я FireBird сверху поставил


 
Zacho   (2003-07-10 09:08) [8]


> Spawn © (10.07.03 08:54)
> IBDataSet у меня

Выключи CachedUpdates. Практически в каждой версии IBX есть баги в CachedUpdates.

> Spawn © (10.07.03 08:56)

А это вообще к этой проблеме отношения не имеет.


 
Spawn   (2003-07-10 09:11) [9]

Та же ошибка без CachedUpdates


 
VAleksey   (2003-07-10 09:14) [10]

Код запроса и код запроса на обновление давай.


 
Johnmen   (2003-07-10 09:15) [11]

>Spawn © (10.07.03 08:56)
>Я FireBird сверху поставил

А для БД сделал backup/restore ? Или сразу стал использовать под FB ?



 
Spawn   (2003-07-10 09:16) [12]

Код сгенерированный компонентом:

Modify:
update DOCUMENTS
set
ID = :ID,
NAME = :NAME,
ANNOT = :ANNOT,
PICTURE = :PICTURE,
DEVFIO = :DEVFIO,
TEL = :TEL,
LABNUM = :LABNUM,
ZAVFIO = :ZAVFIO
where
ID = :OLD_ID and
NAME = :OLD_NAME and
ANNOT = :OLD_ANNOT and
PICTURE = :OLD_PICTURE and
DEVFIO = :OLD_DEVFIO and
TEL = :OLD_TEL and
LABNUM = :OLD_LABNUM and
ZAVFIO = :OLD_ZAVFIO

Запрос самый обычный:

SELECT * FROM Documents


 
Spawn   (2003-07-10 09:17) [13]

Johnmen © (10.07.03 09:15) сразу начал использовать. А с этим связаны какие то проблемы?


 
ЮЮ   (2003-07-10 09:23) [14]

>Запрос самый обычный:
Гораздо лучше, когда он выглядит так: :-)
update DOCUMENTS
set
NAME = :NAME,
ANNOT = :ANNOT,
PICTURE = :PICTURE,
DEVFIO = :DEVFIO,
TEL = :TEL,
LABNUM = :LABNUM,
ZAVFIO = :ZAVFIO
where
ID = :OLD_ID


 
Johnmen   (2003-07-10 09:34) [15]

>Spawn © (10.07.03 09:17)

Ещё какие...
Общая рекомендация, приводимая практически везде - backup под предыдущей версией сервера и restore под новой.
Иначе могут быть трудноуловимые, практически неисправляемые глюки при работе с БД.


 
Spawn   (2003-07-10 11:05) [16]

Так что то тут не то. Короче, я проверил прилагаемую к книге прогу для работы с базой employee. Перевел ее на файл серверную все было ок и прекрасно работало (Практически те же самые запросы что и я делал). Я решил заново создать свою БД, поскольку записей там практически еще и нету. Но вот проблемка - первую свою БД я создал, преобразовав ее из Paradox БД в InterBase (и кстати при этом какая то ошибка вылезла). Но, рещив ее сделать с нуля, не могу ее сохранить. Создаю в IBConsole файл в котором будут храниться таблицы InterBase. Затем пытался создать в DataBase Desktop таблицу и добавить в файл, но не тут то было ))) Не как не сохранить там. Неужели нужно создавать таблицу SQL-ем? Что то типа Create Table ???


 
Zacho   (2003-07-10 11:20) [17]


> Spawn © (10.07.03 11:05)

А чего бы это DataBase Desktop работал с IB ?
Вообще-то и создание метаданных (таблицы, ХП, триггера и т.п.), и работа с данными в SQL-серверах делается только соответствующими SQL-запросами. А если тебе нужен инструмент для разработки и администрирования БД для IB - то смотри здесь: http://www.ibase.ru/d_tools.htm
Я бы посоветовал IBExpert - http://pwww.ibexpert.com


 
Spawn   (2003-07-10 11:40) [18]

Создал в Interactive SQL таблицу. А можно ли после этого изменть тип поля?


 
Zacho   (2003-07-10 12:00) [19]


> Spawn © (10.07.03 11:40)

Можно. Удали это поле и создай новое.
Читай Data Definition Guide, Chapter 6 "Working with Tables", Altering tables
А вообще, как ты себе представляешь изменение типа поля ? Что при этом должно происходить с данными, которые были в этом поле ?


 
Spawn   (2003-07-10 12:09) [20]

Нет) Я не собираюсь во время работы базы менять поля. Просто во время создания создал не то поле (Но уже прочитал, что нужно юзать ALTER TABLE ... для удаления/добавления этих полей). Ошибки не стало, но сохранения данных в базе не происходит))) Ни при ApplyApdates, ни при использовании Action-события DataSetPost


 
Spawn   (2003-07-10 12:37) [21]

Меня ето просто бесит уже!!! Как так то. Почему данные не созраняются на сервере. Делаю абсолютно все как было написано в книге. Даже так сделал - в рабочей программе от книги, заменил базу на свою. DBGrid заполняется данными, но после редактирования и выходе из проги данные не сохраняются. КАК ТАКОЕ МОЖЕ БЫТЬ!!!!!!!


 
Spawn   (2003-07-10 13:40) [22]

Еще одно наблюдение - я могу добавить первую запись в DBGrid, после чего следущие попытки изменения ни к чему не приводят. То же самое справедливо для добавленых записей(то есть максимум какйю запись я могу изменить - это первую и всего один раз).


 
Spawn   (2003-07-10 13:46) [23]

И если в это первое поле (тип VARCHAR) ввести не числовое значение и попытаться сохранить данные, то возникает ошибка -
EIBInterBaseError with message "arithmetic exception, numeric overflow, or string truncation". К чему бы это?


 
Mike1 Kouzmine1   (2003-07-10 13:49) [24]

Транзакции?
Св-ва IBDatabase?


 
Spawn   (2003-07-10 13:54) [25]

Так с одним я разобрался нужно было указать Primary Key для того чтобы я мог вносить изменения в любую запись. Теперь другая проблемы - если ввожу значения отличные от цифр, то возникает ошибка, описанная мною выше.


 
Mike1 Kouzmine1   (2003-07-10 13:57) [26]

При подключении - какая кодировка указана?


 
Spawn   (2003-07-10 13:57) [27]

Так еще одно прояснение))) Ошибка вылетает только с русскими буквами)) Где то я тут видел тему на етот счет ща найду) Кажись мои мучения подходят к концу)


 
Spawn   (2003-07-10 13:59) [28]

Mike1 Kouzmine1 (10.07.03 13:57) Кодировка Pdox ANSI Cyrillic


 
Mike1 Kouzmine1   (2003-07-10 14:04) [29]

А что это такое для компонент прямого доступа?
Может какая другая нужна? Например, win1251?


 
Spawn   (2003-07-10 14:07) [30]

Это в BDE администраторе она такая, а так то конечно win1251


 
Mike1 Kouzmine1   (2003-07-10 14:32) [31]

А как именно она указана для IBDatabase?


 
Spawn   (2003-07-10 14:38) [32]

Всмысле для IBDataBase? Там разве тоже кодировку можно прописывать? Я такого свойства не видел там, разве что в Params?


 
Johnmen   (2003-07-10 14:44) [33]

Даблклик на IBDataBase или в Params lc_ctype=WIN1251


 
Spawn   (2003-07-10 15:04) [34]

Johnmen © (10.07.03 14:44) большое спасибо.
И все таки не Primary Key влияло на невозможность внесения данных в БД, а наличие в ней BLOB полей(Протестировал на 5 различных комбинациях и там где были BLOB изменять нельзя другие поля после их первого установления). Почему так?


 
Johnmen   (2003-07-10 15:26) [35]

Как прописан ModifySQL ?


 
Spawn   (2003-07-10 16:36) [36]

Сгенерированный компонентом:

update DOC
set
ID = :ID,
NAME = :NAME,
ANNOT = :ANNOT, //BLOB
PICTURE = :PICTURE, //BLOB
DEVFIO = :DEVFIO,
TEL = :TEL,
LABN = :LABN,
ZAVFIO = :ZAVFIO
where
ID = :OLD_ID and
NAME = :OLD_NAME and
ANNOT = :OLD_ANNOT and //BLOB
PICTURE = :OLD_PICTURE and //BLOB
DEVFIO = :OLD_DEVFIO and
TEL = :OLD_TEL and
LABN = :OLD_LABN and
ZAVFIO = :OLD_ZAVFIO



 
Johnmen   (2003-07-10 16:53) [37]

Разве в where одного поля ID не достаточно для однозначной идентификации записи ? :)

ANNOT = :OLD_ANNOT and //BLOB
PICTURE = :OLD_PICTURE and //BLOB


А это вообще что-то немыслимое...:)


 
Spawn   (2003-07-10 17:01) [38]

Дак я на SQL перешел пару дней назад и до этого то один раз только базами занимался, а литературы по нми хорошей нет)))) Не подскажешь ли что с Блобами делать?


 
Spawn   (2003-07-10 17:04) [39]

Ладно)) Вроде пока все нормально Блобы нацеплю на TDBImage и TDBMemo


 
Johnmen   (2003-07-10 17:13) [40]

>Spawn © (10.07.03 17:01)

Я бы на твоём месте всё-таки сначала почитал книги, прежде чем топтать клаву на предмет баз данных...:)))



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.011 c
1-100747
Vorobyev Sergey
2003-07-16 11:31
2003.07.31
Глюк!!! Смещение символов в TMemo


4-101029
dimonf
2003-05-28 19:45
2003.07.31
Народ, как определить что у меня курсор не на PopupMenu???


1-100805
Kosha
2003-07-17 10:06
2003.07.31
Как открыть и закрыть другое приложение


3-100533
непонимающий
2003-07-10 14:39
2003.07.31
Пароль на таблицу


1-100681
uhhax
2003-07-18 04:51
2003.07.31
Почему прога так много ест памяти?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский