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

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

  Все выпуски  

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

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

Чемпионы рейтинга экспертов в этой рассылке

Jimhucksly
Статус: 5-й класс
Рейтинг: 551
∙ повысить рейтинг »
LanK
Статус: Профессионал
Рейтинг: 278
∙ повысить рейтинг »
Selax
Статус: 5-й класс
Рейтинг: 168
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / СУБД и Delphi/Lazarus

Номер выпуска:554
Дата выхода:18.03.2010, 17:00
Администратор рассылки:Gh0stik, Модератор
Подписчиков / экспертов:339 / 102
Вопросов / ответов:3 / 5

Вопрос № 62687: Здравствуйте. 1) Подскажите, как написать SQL запрос к InterBase в Delphi 7… К парадоксу писал так: SQL.Add(\'SELECT ID, Name, Avtor, Izd, God, Vid, Sp\'); SQL.Add(\'FROM ":PPT:1.db"\'); SQL.Add(\'WHERE\'); SQL.Add(\'(God =...


Вопрос № 111317: Доброго времени суток. Подскажите, please, как можно решить такую проблему: имеется БД MS Access (D7Enterprise+ADO), в ней около 100 таблиц, в которых может быть от 300 до 200000 строк. Некоторые строки (Char) достигают 4000 символов в длину. В прогр...
Вопрос № 57214: Здравствуйте! При отладке ниже приведёного кода выходит ошибка: Ошибка синтаксиса(пропущен оператор) в выражении запроса \'STAVKA*\'40000\'/36 SUMMA\' ..

Вопрос № 62687:

Здравствуйте.
1) Подскажите, как написать SQL запрос к InterBase в Delphi 7…
К парадоксу писал так:
SQL.Add(\'SELECT ID, Name, Avtor, Izd, God, Vid, Sp\');
SQL.Add(\'FROM ":PPT:1.db"\');
SQL.Add(\'WHERE\');
SQL.Add(\'(God = "\'+ God + \'")\');
SQL.Add(\'ORDER BY Name\');
где PPT – псевдоним, а 1.db – имя файла БД.
Пробовал аналогичный к InterBase, выходит ошибка “Table does not exist“.
2) Как автоматически при загрузке Win XP стартовать InterBase Server v. 6.5.0.28? Сейчас запускаю так: Открываю IBConsole, щёлкаю по Local Server, ввожу имя, пароль и он стартует…

Отправлен: 15.11.2006, 06:15
Вопрос задал: ALL_mikky
Всего ответов: 3
Страница вопроса »


Отвечает sir Henry, Старший модератор :
Здравствуйте, ALL_mikky!
Аналогом работы с IB является работа с Акцесовской базой. В IB все таблицы точно так-же хранятся в одном файле базы данных.
1. Нужно установить коннект с базой данных.
2. Открыть базу данных.
3. Выполнить запрос к одной или нескольким таблицам.
Например в БД у Вас есть таблица работников rabotniki с полями ID, NAME, DOLJNOST, ZARPLATA. Тогда запрос к таблице будет выглядеть так:
SELECT name, doljnost, zarplata FROM rabotniki
WHERE zarplata>10000
ORDER BY name
Естественно, прежде чем выполнять запрос, Вы должны создать как саму базу данных, так и необходимые Вам таблицы, тогда ошибки типа “Table does not exist“ у Вас выскакивать не будут, т.к. Вы точно будете знать, какие таблицы и с какими именами у Вас существуют в базе данных. Россия, Красноярск

-----
Я только в одном глубоко убеждён - не надо иметь убеждений! :)

Ответ отправил: sir Henry, Старший модератор
Ответ отправлен: 15.11.2006, 07:12

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 126684 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Архангельский Андрей Германович, Специалист :
    Здравствуйте, ALL_mikky!

    1) Соединение с IB идет в два этапа:
    - на форму бросается компонент IBDatabase, в котором указывается путь к БД (возможно сетевой), логин и пароль, роль пользовтеля и диалект.
    - потом бросается компонент IBTransaction, в котором указывается ссылка на IBDatabase и поведение трансакций.
    - после этого кладется компонент IBQuery и DBDataSource, ссоответствующими ссылками.
    ПОсле этого в IBQuery.SQL.Add(\'Select * from Table where ... order...\');
    И открываешь запрос.
    ЕСли к Query прицеплен DBGrid то получаешт содержимое в гриде.

    -----
    Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО

    Ответ отправил: Архангельский Андрей Германович, Специалист
    Ответ отправлен: 15.11.2006, 11:11

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 126730 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Химяк Виктор Васильевич, 5-й класс :
    Здравствуйте, ALL_mikky!
    К последнему ответу добавлю, Вам многое надо забыть, что вы умели делать в Paradox, IB - это совсем другая СУБД, SQL-серверная.
    Почитайте, вот здесь:
    http://www.interbase-world.com/ru/firebird/,
    там написано о FB бесплатном аналоге IB.

    Ответ отправил: Химяк Виктор Васильевич, 5-й класс
    Ответ отправлен: 15.11.2006, 21:28

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 126823 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 111317:

    Доброго времени суток. Подскажите, please, как можно решить такую проблему: имеется БД MS Access (D7Enterprise+ADO), в ней около 100 таблиц, в которых может быть от 300 до 200000 строк. Некоторые строки (Char) достигают 4000 символов в длину. В программе нужно узнать, какие изменения (Insert/Update/Delete) производились в базе за какой-то период (например за сегодняшний день или за последние 3 дня). Программа может быть запущена как резидент или сервис - не суть важно. Создавать копию БД в начале нужного периода, а потом просто сравнивать 2 базы очень не хочется из-за их размеров (слишком долго и затратно с т.з. ресурсов ПК). Может быть есть какой-то более элегантный и разумный способ? Заранее, спасибо.

    Отправлен: 28.11.2007, 03:06
    Вопрос задал: MiCroSom
    Всего ответов: 1
    Страница вопроса »


    Отвечает Кэр Лаэда, Практикант :
    Здравствуйте, MiCroSom!

    Довольно странный вопрос, если программа поддерживает Логгирование действий, то естественно вы можете посмотреть, иначе никак, только сравнением бэкапов.

    Можете попробовать написать модуль который будет отлавливать все обращения к базе данных и записывать запросы в лог, вместе с результатами, но это уже будет отлов будущих действий а не тех что были.
    -----
    Я знаю что ничего не знаю, но я знаю больше, чем тот кто думает что знает все

    Ответ отправил: Кэр Лаэда, Практикант
    Ответ отправлен: 28.11.2007, 15:53

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 196639 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 57214:

    Здравствуйте!
    При отладке ниже приведёного кода выходит ошибка:
    Ошибка синтаксиса(пропущен оператор) в выражении запроса \'STAVKA*\'40000\'/36 SUMMA\'

    Отправлен: 30.09.2006, 12:25
    Вопрос задал: Buenos dias, Практикант
    Всего ответов: 1
    Страница вопроса »


    Отвечает sir Henry, Старший модератор :
    Здравствуйте, KuchumHan!
    1. У Вас после "/36" и перед "SUMMA" пропущена запятая, если "SUMMA" это поле таблицы. Если же словом "SUMMA" Вы хотите обозначить столбец, в котором вычисляете выражение, то необходимо написать "AS Summa".
    2. В строчке где запрос у Вас закомментирован Вы совершенно зря ставите расширение ".MDB". Дело в том, что файл с расширением ".MDB" это база данных, которая может содержать несколько таблиц, а запрсы проводятся исключительно к таблицам, а не к базам данных.
    3. Там где Вы подставляете значения из Edit1.Text, могут быть лишние пробелы, которые могут совершенно исказить смысл выражения, поэтому лучше всего ведущие и концевые пробелы убирать функцией Trim().
    4. Просто пожелание. Пишите большими буквами только операторы SQL, а названия таблиц и названия полей пишите маленькими буквами, тогда Ваше выражение будет более удобно читать и таким образом Вы сразу будете видет ь синтаксическую ошибку в построенном Вами выражении. Россия, Красноярск

    -----
    Я только в одном глубоко убеждён - не надо иметь убеждений! :)

    Ответ отправил: sir Henry, Старший модератор
    Ответ отправлен: 30.09.2006, 14:55

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 119463 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


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

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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное