Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 490
от 06.05.2008, 02:35

Администратор:Gh0stik
В рассылке:Подписчиков: 297, Экспертов: 28
В номере:Вопросов: 4, Ответов: 6

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 134318: Возможно в делфи вставить базу данных (mdf , ldf) ?...
Вопрос № 134466: Здравствуйте! Подскажите, пожалуйста, есть макрос Microsoft Access, а как запустить его в Delphi т.е. при нажатии кнопки на форме в Delphi, вызывался бы макрос из Microsoft Access (очень нужно). Информации в интернете не нашел. Заранее очень благодар...
Вопрос № 134607: Как делать бекап базы данных ? (FireBird компоненты IB)...
Вопрос № 134632: Помогите пожалуйста!!! Делаю поиск ч/з запрос по полю «DataCb» тип DateTime. Назначаю запросу переменную :Date. Текст запроса: SELECT * FROM Komplekt WHERE DataCb LIKE :Date Далее по событию onClick пишу: DateTimePicker1...

Вопрос № 134.318
Возможно в делфи вставить базу данных (mdf , ldf) ?
Отправлен: 27.04.2008, 06:43
Вопрос задал: Кук Евгений (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Виктор Пырлик
Delphi — это среда программирования, т.е. инструмент для создания программ, которые в том числе, и работают с базами данных. Другими словами,с помощью Delphi делают только интерфейс (программы) для доступа к базам данных. Сама ИСР (интегрированная среда разработки) ничего не знает ни о каких базах данных. Программист самостоятельно устанавливает правила и алгоритмы для подключения к базам данных и управления этим данными. В Delphi предусмотрено 4 подхода —
на основе BDE, универсального пакета который содержит множество драйверов к различным базам данных. Эта технология устарела, и используется сегодня, как правило для «плоских» таблиц, т.е. например, dBase, Paradox и др.
на основе технологии ADO — это сегодня актуальная технология, которая более удобна и так же поддерживает множество методов доступа к базам данных, которые могут быть расширены практически не ограничено, за счет инсталляции дополнительных драйверов.
На основе «прямых», низкоуровневых драйверов Int erBase — это ориентация на работу с СУБД InterBase/Firebird
На основе dbExpres — это однонаправленные курсоры, так же поддерживается множество СУБД.
Вы привели расширение mdf и ldf — это не «база данных», это характерное расширение для файлов MS SQL Server — файл данных и файл журналов.
По этому, в Delphi нельзя «вставить» базу данных, вообще никакую. Но на Delphi можно написать программу для любой базы данных. В том числе, и для MS SQL — о которой вы спрашиваете.
Для этого используйте компоненты для доступа к данным со страницы ADO.
По сути, Delphi и C++Builder и ориентированы на разработку приложений для работы с базами данных. Так что, это именно те инструменты, которые и нужны для разработки ПО для работы с БД.

Но надо учитывать, что база данных это отдельный продукт, т.е. MS SQL Sqrver в вашем случае — устанавливается отдельно и обязательно должен быть запущен на момент старта или разработки программы.
---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Свердловская обл.
Тел.: +7(34386) 53-5-98
ICQ: 490191733
----
Ответ отправлен: 27.04.2008, 10:02
Оценка за ответ: 5
Комментарий оценки:
А вы можете объяснить поподробнее как это сделать через ADO ?

Отвечает: Tresda
Здравствуйте, Кук Евгений!

Не совсем правильно сформирован вопрос, файлы MDf И LDF (сама база и журнал) являются файлами SQL Server и к ним можно подключится при помощи к примеру компонента ADOConnection.

Вот примерный "Connection String" компонента ADOConnection:

Приложение:

Ответ отправил: Tresda (статус: 1-ый класс)
Ответ отправлен: 28.04.2008, 12:06


Вопрос № 134.466
Здравствуйте! Подскажите, пожалуйста, есть макрос Microsoft Access, а как запустить его в Delphi т.е. при нажатии кнопки на форме в Delphi, вызывался бы макрос из Microsoft Access (очень нужно). Информации в интернете не нашел. Заранее очень благодарен.

Отправлен: 28.04.2008, 08:12
Вопрос задал: Hellpme (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Sosedov A.I.
Здравствуйте, Hellpme!

В приложении находится текст процедуры, которая
- запускает приложение Access,
- открывает базу данных,
- выполняет макрос,
- закрывает базу данных,
- закрывает приложение Access.

Разместите на форме компонент TAccessApplication с вкладки Servers и присвойте ему имя AA1. Создайте в папке c: emp новую базу данных db2.mdb с макросом "Макрос1". В обработчик нажатия кнопки поместите процедуру из приложения.

Приложение:

Ответ отправил: Sosedov A.I. (статус: 6-ой класс)
Ответ отправлен: 29.04.2008, 13:03
Оценка за ответ: 5


Вопрос № 134.607
Как делать бекап базы данных ? (FireBird компоненты IB)
Отправлен: 29.04.2008, 00:03
Вопрос задал: VaNuk (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Виктор Пырлик
Здравствуйте, VaNuk!

backup это изготовление резервной копии базы данных "на ходу". Выполнять можно при работающих пользователях, однако надо помнить, что сохранены в backup будут только те данные, которые существовали на момент старта backup. Делать backup (и restore) можно как через Services API (в IBConsole, IBExpert и других, или в Delphi в палитре компонент InterBase Admin), так и утилитами командной строки.
Например:
gbak -b localhost:c:dirdb.gdb d:db.gbk -user SYSDBA -pass masterkey
расширение файла backup значения не имеет. Не рекомендуется делать backup на тот же логический диск, где лежит база (если кончится место, и БД перестанет работать, и бэкап не сделается), а еще лучше делать backup на отдельный физический диск (с точки зрения производительности).
Быстрее всего backup можно получить, если выключить сборку мусора, которая работает по умолчанию:
gbak -b -g localhost:c:dirdb.gdb d:db.gbk -user SYSDBA -pass m asterkey
(мусор никогда не попадает в backup. речь просто идет о том, что backup по умолчанию читая записи пытается определить, если у записи есть версии, то нужны они или нет. ключ -g отключает это поведение)
еще лучше всегда добавлять ключ -v, который приводит к подробному выводу действий backup - в этом случае если произойдет ошибка, будет видно, где именно она произошла. Вывод можно направить и в файл:
gbak -b -g localhost:c:dirdb.gdb d:db.gbk -user SYSDBA -pass masterkey -v -y bak-log.txt

Backup рекомендуется делать регулярно, и сохранять его в архив (лучший вариант - ежедневный backup с сохранением 7-ми последних копий).
Делать архив БД через простое копирование файла БД можно, только если к этой БД нет ни одного подключенного пользователя - файл БД это файл произвольного доступа, а копирование операционная система выполняет последовательно. В результате вы на выходе получите испорченную "копию" файла БД.
! не рекомен дуется делать restore в файл оригинальной БД (ключ -r). Всегда делайте restore только с ключом -c.
! если backup будет каким-либо образом поврежден, восстановить из него базу данных вряд ли удастся.
! даже на нынешних рабочих станциях backup базы данных размером 2 гигабайта идет около 15 минут (с ключом -g). Если у вас этот процесс происходит как минимум в 2-3 раза дольше, значит сервер загружен другими задачами, у вас медленный винчестер, или проблемы какого-то другого рода.
----------------------------------------------------------------------------------
Удобную утилиту, позволяюшую работать в фоновом режиме и создовать резервные копии, а также, сжимать эти копии при необходимости можно взять тут
----------------------------------------------------------------------------------
Взято с сайта InterBase, Firebird, Yaffil FAQ


---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Свердловская обл.
Тел.: +7(34386) 53-5-98
ICQ: 490191733
----
Ответ отправлен: 29.04.2008, 06:04
Оценка за ответ: 5
Комментарий оценки:
спасибо ! :)))))))))))))))))))


Вопрос № 134.632
Помогите пожалуйста!!!
Делаю поиск ч/з запрос по полю «DataCb» тип DateTime. Назначаю запросу переменную :Date. Текст запроса:
SELECT *
FROM Komplekt
WHERE DataCb LIKE :Date

Далее по событию onClick пишу:
DateTimePicker1.DateTime:=StrToDate(Edit2.Text);
DateQuery.SQL.Clear;
DateQuery.Parameters.ParamByName('Date').Value:=DateTimePicker1.Date;
DateQuery.Active:=true;
Form5.ShowModal;
Мне выдается сообщение «is not a valid date». Что я делаю не так?
Заранее спасибо.
Отправлен: 29.04.2008, 08:55
Вопрос задал: Oles01 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Виктор Пырлик
Здравствуйте, Oles01!

DateQuery.SQL.Clear;
Вы очищаете запрос - у вас ничего уже нет, и конечно дальнейшее не имеет смысла.
Если вы пользуетесь параметрами, нет необходимости очищать сам запрос - достаточно просто назначить параметру новое значение. И переоткрыть или обновить запрос.

до Clear у вас:
SELECT *
FROM Komplekt
WHERE DataCb LIKE :Date

после Clear - пустая строка.

Кострукция с Clear имеет следующий алгоритм:

DateQuery.SQL.Clear;
DateQuery.SQL.Add(Format('SELECT * FROM Komplekt WHERE DataCb LIKE %s',[QuotedStr(DateToStr(Date))]));
DateQuery.Active := True;


---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Свердловская обл.
Тел.: +7(34386) 53-5-98
ICQ: 490191733
----
Ответ отправлен: 29.04.2008, 09:19
Оценка за ответ: 5
Комментарий оценки:
Спасибо ОГРОМНОЕ!!! Все получилось!

Отвечает: Mishell
Здравствуйте, Oles01!
"is not a valid date" выдается скорее-всего на строку
DateTimePicker1.DateTime:=StrToDate(Edit2.Text);
зачем Вам эта строка нужна, Вы вводите дату в Edit2, а потом перебрасываете в DateTimePicker1?
а почему бы сразу не вводить дату в DateTimePicker1? - ведь он для этого и предназначен
но если Вы все-таки решите поизвр... т.е. поэспериментировать :) то можно так:
DateTimePicker1.DateTime:=StrToDateDef(Edit2.Text,Date);
или так:
try
DateTimePicker1.DateTime:=StrToDate(Edit2.Text);
except
ShowMessage('Не правильно задана дата!');
exit;
end;
Ответ отправил: Mishell (статус: 7-ой класс)
Ответ отправлен: 29.04.2008, 10:10
Оценка за ответ: 5
Комментарий оценки:
Вы были правы, все дело в этой строке. Спасибо ОГРОМНОЕ!!!


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.91 pre 5.0 RC1 от 13.04.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное