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

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

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


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

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

Выпуск № 387
от 19.08.2007, 19:05

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


Вопрос № 98259: Уважаемые Эксперты! Как можно из программы сделать дефрагментацию базы данных. Пользую Delphi5, формат MSAccess, ADO-компоненты. Сейчас делаю "в лоб": см. приложение. Но это все как-то не очень красиво... ...
Вопрос № 98338: Сохроняю числа тип флоат в базе и не могу обрезать число т.е. надо только четыре цивры в конце а он сохроняет 12. в параметрах указываю тип флоат а как вот задать фикисрованную величину не смог найти. База InterBase...
Вопрос № 98354: Вопрос заключается в следующем, программа с помощью ADОConnection (SQLOLEDB) подключается к базе на сервере, заполняя данными таблицу, если программа запущена на локальном компе под ХР то всё отлично, а если удалённо с другого сервера то в таблицу вм...

Вопрос № 98.259
Уважаемые Эксперты!

Как можно из программы сделать дефрагментацию базы данных.
Пользую Delphi5, формат MSAccess, ADO-компоненты.
Сейчас делаю "в лоб": см. приложение. Но это все как-то не очень красиво...

Приложение:

Отправлен: 13.08.2007, 19:04
Вопрос задал: Kupujiji
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов С.Е.
Здравствуйте, Kupujiji!

Делал сжатие базы MS Access используя JRO (Jet Replication Objects) (оригинал здесь)
Решение - в примере. В переменную sBase внесите имя БД (с полным путем). (DatabaseConnection: TADOConnection; - в программе использую для отключения от базы - необходимо для получения возможности сжатия базы).

Удачи!

Приложение:

---------
Ждешь квалифицированного ответа? Задай правильно вопрос!

Ответ отправил: Устинов С.Е. (статус: Профессионал)
Украина, Славянск
Организация: SlavComp
WWW: Физико-математический факультет СГПУ
ICQ: 4343069
----
Ответ отправлен: 14.08.2007, 03:08

Отвечает: Mishell
Здравствуйте, Kupujiji!
сжатие базы (я так понял Вы это имели ввиду) можно сделать например так:
1) с помощью JRO (Jet Replication Objects) - см. приложение
пример с JRO взял тут: http://delphiworld.narod.ru/base/compact_access_db2.html
2) с помощью запроса:
backup log <tablename> with no_log
backup log <tablename> with truncate_only
DBCC shrinkdatabase(<tablename>)
но этот вариант скорее подходит для баз типа MsSQL

Приложение:

Ответ отправил: Mishell (статус: 5-ый класс)
Ответ отправлен: 14.08.2007, 10:24


Вопрос № 98.338
Сохроняю числа тип флоат в базе и не могу обрезать число
т.е. надо только четыре цивры в конце а он сохроняет 12.
в параметрах указываю тип флоат а как вот задать фикисрованную величину не смог найти.
База InterBase
Отправлен: 14.08.2007, 10:34
Вопрос задал: Ermek Mnafianov (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Mishell
Здравствуйте, Ermek Mnafianov!
чтобы задать число с заданным кол-вом цифр после запятой можно использовать типы данных Numeric или Decimal:
ALTER TABLE <tablename> ADD <newfield> NUMERIC(12, 4);
Ответ отправил: Mishell (статус: 5-ый класс)
Ответ отправлен: 14.08.2007, 11:12


Вопрос № 98.354
Вопрос заключается в следующем, программа с помощью ADОConnection (SQLOLEDB) подключается к базе на сервере, заполняя данными таблицу, если программа запущена на локальном компе под ХР то всё отлично, а если удалённо с другого сервера то в таблицу вместо русских символов записываются непонятные крукозябры! как с этим справится??
Отправлен: 14.08.2007, 12:28
Вопрос задал: Kast (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 21)

Отвечает: Delph
Здравствуйте, Kast!

1) Поменяйте типы полей в таблицах с "char" на "nchar", с "varchar" на "nvarchar" и с "text" на "ntext". Это объяснит серверу, что данные хранятся в формате Unicode, не зависящем от установленных языковых настроек.
2) Когда формируете запрос на вставку/изменение, ставьте префикс "n" перед строкой:

insert into TableName (..., FieldName, ...)
values(..., n'Вставляемая строка', ...)

update TableName
set FieldName = n'Вставляемая строка'
where...

Читал ещё рекомендацию, что вставку и изменение данных лучше проводить через хранимые процедуры, но не думаю, что это повлияет на отображение данных (хотя рекомендация обоснована по ряду других причин, например, в процедурах можно организовать какие-то проверки...)
Ответ отправил: Delph (статус: 7-ой класс)
Ответ отправлен: 14.08.2007, 16:59
Оценка за ответ: 3
Комментарий оценки:
хароший вариант, но не помог!!


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.54 beta от 01.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное