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

RFpro.ru: Программирование на Delphi и Lazarus


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

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

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

Boriss
Статус: Академик
Рейтинг: 1731
∙ повысить рейтинг »
lamed
Статус: Практикант
Рейтинг: 1367
∙ повысить рейтинг »
Jimhucksly
Статус: 5-й класс
Рейтинг: 639
∙ повысить рейтинг »

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

Номер выпуска:1489
Дата выхода:01.02.2010, 00:30
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:585 / 229
Вопросов / ответов:3 / 5

Вопрос № 176301: Здравствуйте! Есть такая задачка: нужно конвертировать таблицу .dbf в .IB через компоненты Delphi, вкладки палитры компонентов InterBase. ссылка на таблицу .dbf...


Вопрос № 176317: Здравствуйте Уважаемые эксперты. У меня еще вопросик. Точнее два, но они не столь значительны, так что задаю их в одном. Уважаемые модераторы, если вы считаете что их нужно разделить - я отправлю отдельным вопросом второй. 1) Имеется мног...
Вопрос № 176324: Здравствуйте Уважаемые эксперты. Возможно ли в Delphi 7 сделать таким образом. Вынести на форму несколько компонентов, одного типа, и обращаться к ним как к элементам массива. Если в коде задавать массивом, то не так визуально выглядит и больше п...

Вопрос № 176301:

Здравствуйте! Есть такая задачка: нужно конвертировать таблицу .dbf в .IB через компоненты Delphi, вкладки палитры компонентов InterBase. ссылка на таблицу .dbf

Отправлен: 26.01.2010, 00:46
Вопрос задал: Судейкин Андрей Владимирович, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает Del, 3-й класс :
Здравствуйте, Судейкин Андрей Владимирович.

Не будем заморачиваться с универсальностью, а представим, что вы уже подготовили необходимую таблицу аналогичной структуры в базе IB. Так же предположим, что в вашей программе по перегону данных уже есть TIBDatabase, TIBTransaction (для подключения к БД Interbase), уже настроенные на подключение к нужной базе, а так же - ну, хотя бы TTable (имя пусть будет Table1) со вкладки BDE. На всякий случай подскажу: в Table1 вам надо только поменять имя таблицы (укажите полный путь к файлу dbf), и сказать Active := False (рекомендую пояснить это с клавиатуры - микрофон Delphi пока еще не понимает). Для проверки положите на форму TDataSource (у неё укажите в качестве DataSet вышеобозначенную Table1), TDBGrid (выставьте ей DataSource'ем) только что созданный DataSource1 и поглядите - отображаются ли данные в таблице.

Теперь кладите на форму TIBQuery (он будет у нас зваться IBQuery1). В свойстве SQL пишите ему что-то вроде следующего:
Код:
insert into TABLE_NAME(
KZK,
CHTO,
KCH,
NCHTO,
CI,
EI,
OCN,
OCNS,
NCHP,
NCHPS,
NCENA,
VES,
KNC,
KNCH,
PR,
NPR
)values(
:KZK,
:CHTO,
:KCH,
:NCHTO,
:CI,
:EI,
:OCN,
:OCNS,
:NCHP,
:NCHPS,
:NCENA,
:VES,
:KNC,
:KNCH,
:PR,
:NPR
)


Тут я опять же предполагаю, что структура таблиц вплоть до названий полей у вас совпадает. Продолжим.
Разумеется, вы правильно указали имя БД в IBDatabase1, там же правильно указали DefaultTransaction (которая у нас называется IBTransaction1), в IBTransaction1 сказали, что DefaultDatabase - это IBDatabas e1, а в IBQuery1 указали опять же правильную DerfaultTransaction. Переходим к написанию кода. Как он выглядит - см. приложение.

Поясняю, про что там.
Мы переходим в самое начало нашей таблицы dbf, а потом до тер пор, пока она не кончится, делаем следующее: перебираем все её поля и их значения запихиваем в соотв. параметры нашего запроса (который IBQuery1). После того, как все параметры мы заполнили, мы выполняем запрос на вставку данных, приведенный ваше по тексту и переходим к следующей записи нашей таблицы DBF.
Когда таблица кончилась - мы подтверждаем внесенные в базу IB изменения.
Всё просто.
Удачи.

P.S. А еще есть утилита DataPump...
Код запроса обрамлён тэками "код".
-----
∙ Отредактировал: sir Henry, Старший модератор
∙ Дата редактирования: 26.01.2010, 09:13 (время московское)

Приложение:

-----
Только массовые расстрелы спасут Родину!

Ответ отправил: Del, 3-й класс
Ответ отправлен: 26.01.2010, 02:11
Номер ответа: 258956

Оценка ответа: 5

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

  • Отвечает lamed, Практикант :
    Здравствуйте, Судейкин Андрей Владимирович.
    BackUp базы данных, отдельно скрипт на создание, проект здесь:176301.ZIP (220.2 кб)
    Используется хранимая процедура. В приложении обработчик выбора пункта меню. Спрашивайте, если что-то не ясно. С уважением

    Приложение:

    Ответ отправил: lamed, Практикант
    Ответ отправлен: 29.01.2010, 11:30
    Номер ответа: 259053

    Оценка ответа: 5

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

  • Вопрос № 176317:

    Здравствуйте Уважаемые эксперты. У меня еще вопросик.
    Точнее два, но они не столь значительны, так что задаю их в одном.
    Уважаемые модераторы, если вы считаете что их нужно разделить - я отправлю отдельным вопросом второй.
    1) Имеется много компонентов типа TImage, необходимо при нажатии на каждый определить его и изменить его высоту на единичку.
    Проблема заключается в том, что я не знаю как определить, на каком компоненте произошло событие. Если бы это вышло сделать, то можно было бы с каждым компонентом в одной процедуре делать действия. Например при нажатии на первый. А все остальные тоже использовали такую же процедуру.
    2) Есть ли такой компонент, который имеет свойства как у панели, то есть является контейнером для объектов, но обладает свойством страниц и возможностью показа определенной страницы? Если есть то что это за компонент и как примерно с ним работать(кратко) или же ссылка. Заранее спасибо.

    Отправлен: 26.01.2010, 15:16
    Вопрос задал: Dimon4ik, 5-й класс
    Всего ответов: 2
    Страница вопроса »


    Отвечает Selax, 5-й класс :
    Здравствуйте, Dimon4ik.
    По первому вопросу: Назначьте один обработчик OnClick для всех Image. В самом обработчике вы можете обратиться к Image, по которму кликнули по передаваемому Sender.
    Приведите его к TImage(Sender).Height:= TImage(Sender).Height+1;

    Ответ отправил: Selax, 5-й класс
    Ответ отправлен: 26.01.2010, 16:37
    Номер ответа: 258973

    Оценка ответа: 5
    Комментарий к оценке:
    Даже не мог подумать, что все так просто!
    Я как только не пробовал обратиться к Sender.
    Ничего не выходило. А сейчас, попробовал как Вы написали - все работает!
    Это на много упростит код моих программ в дальнейшем.
    Отличный ответ!

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

  • Отвечает Del, 3-й класс :
    Здравствуйте, Dimon4ik.

    По второму вопросу: в отличие от предыдущих отвечавших, порекомендую TPageControl (вкладка Win32). Почему? У него (а точнее - у его страниц) есть замечательное свойство TabVisible. Это зачастую удобно.
    -----
    Только массовые расстрелы спасут Родину!

    Ответ отправил: Del, 3-й класс
    Ответ отправлен: 26.01.2010, 16:51
    Номер ответа: 258974

    Оценка ответа: 5
    Комментарий к оценке:
    Да! Это действительно удобное свойство, особенно мне для меня оно как раз то, что нужно!
    Очень хороший компонент. Легко понял как им пользоваться, там и понимать нечего.
    Вы ответили на вторую часть вопроса, так как на первую часть вопроса отлично ответил Selax, поэтому вы вместе мне очень помогли.
    Отлично!

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

  • Вопрос № 176324:

    Здравствуйте Уважаемые эксперты.
    Возможно ли в Delphi 7 сделать таким образом. Вынести на форму несколько компонентов, одного типа, и обращаться к ним как к элементам массива. Если в коде задавать массивом, то не так визуально выглядит и больше прописывать надо. А хочется чтобы все было наглядно...
    Если возможно, то пожалуйста, подскажите как это сделать.

    Отправлен: 26.01.2010, 17:01
    Вопрос задал: Dimon4ik, 5-й класс
    Всего ответов: 1
    Страница вопроса »


    Отвечает Евгений/Genia007/, Бакалавр :
    Здравствуйте, Dimon4ik.
    Вот наглядный пример как это можно сделать: Ложим на форму несколько richedit и когда нужно обращаемся к ним например так
    Код:
    TRichEdit(FindComponent('RichEdit'+ inttostr(massnomotv[i])).SelectAll;
    , где massnomotv массив номеров, в итоге будет выделен весь текст в нужном компоненте.
    Чуть не забыл: Главное что бы в массиве не было номеров больше чем есть этих компонентов иначе ошибка.
    -----
    Помогли тебе, помоги и ты.

    Ответ отправил: Евгений/Genia007/, Бакалавр
    Ответ отправлен: 26.01.2010, 18:15
    Номер ответа: 258978

    Оценка ответа: 5
    Комментарий к оценке:
    Только что попробовал Ваш код и решил свою проблему! =)
    Спасибо, за быструю помощь и очень полезную информацию, которой теперь буду пользоваться всегда!

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

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

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

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

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

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

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

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


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

    В избранное