Привет всем,
Вобщем быстро написанная на коленках софтина для работы с MySQL принесла свои результаты. Вроде бы надо успокоится, но нет - потенциал у софтины еще огромнейший, есть куда расти, да и время не поджимает с наращиванием функционала, а по сему несколько вопросов:
1. Что в конечном итоге лучше использовать для подключения и работы с MySQL - SQLdb или Zeos?
Попробовал и то и то, разницы особой не заметил. Софтина работает с удаленной базой и в пакетном режиме обрабатывает кучу данных, в идеале хочется чтобы вначале вносились изменения в набор данных, а после уже отправлялись в базу, при чем надо отслеживать эту транзакцию - если какой-то сбой в соединении, то транзакцию не проводить - вобщем надо как-то побеспокоится о целостности БД. Я попробовал SQLTransaction - но если честно не понял, как оно работает. В ZConnection есть свойство AutoCommit - что оно делает? По дефолту стоит в true. Я так понимаю оно автоматом записывает изменение в набор данных, типа SQLQuery.Post?
В SQLdb достаточно было закинуть libmysql.dll в корень проекта, а в zeos пришлось дополнительно указывать путь к библиотеке в LibraryLocation. Так и должно быть? Просто я тоже в корень проекта закинул либу, но пока не прописал к ней путь ничего не работало.
2. Как более грамотно работать с несколькими таблицами. Сейчас софтина только изменяет данные в БД, но в будущем хочется чтобы она туда их добавляла. Например есть две таблицы: d_post (id, news, date, title) и d_image(id, news_id,image). То есть получается если в в d_post у news имеется картинка, то она живет в image и связывается по полям d_post.id=d_image.news_id. Если у news картинки нет, то соответственно и нет записи в d_image
Вот как правильно добавить картинку в БД через софтину (вернее не картинку, а путь до нее)
Например софтиной в news вношу изменение что есть картинка, далее SQLQuery.Post и SQLQuery.ApplyUpdates - изменения в БД сохранены, но теперь надо выполнить и INSERT - это придется создавать другой запрос? Или можно как-то по другому?
НУ и немного об совершенстве интерфейса
Сейчас на форме DBGrid, в котором отображается 2 колонки - date и title, и также DBmemo в котором показывается news. Date имеет тип DateTime и показываеся в формате "мм.дд.гггг чч.мм", что в принципе не очень удобно. Хочу сделать через DBLookUpCombobox, чтобы показывалась только дата, без времени. Но что-то у меня с ней не срослось. Выставляю ListSource - источник данных и KeyField - поле которое выводить (date). Запускаю - в комбобксе показывается дата как и было задуманно, но при выборе любого значения в DBMemo ничего не происходить, а если эту же дату выбрать в гриде - то все нормально. Где я накосячил?
И как мне потом эту дату отфильтровать? То есть если из отображения даты убрать время, то получить список с неповторяющимися значениями даты?