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

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

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


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

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

Выпуск № 340
от 09.06.2007, 10:35

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


Вопрос № 89918: Здравствуйте уважаемые эксперты. Работаю с ADO, и недавно столкнулся с такой ситуацией: Иметься таблица(id, id_mag, id_tovar) в MS SQL server 2000 которая связана с другими двумя таблицами(id_mag, name_mag)(id_tovar, name_tovar) по Foreign Ke...

Вопрос № 89.918
Здравствуйте уважаемые эксперты.
Работаю с ADO, и недавно столкнулся с такой ситуацией:
Иметься таблица(id, id_mag, id_tovar) в MS SQL server 2000 которая связана с другими двумя таблицами(id_mag, name_mag)(id_tovar, name_tovar) по Foreign Key-сам. ADOTable подключаю к данной таблице. Для большей понятности создал 2 lookup поля связанные соответственно с другими таблицами. Но тут после внесении данных (в одно поле - в другое не дает переходить сразу выдает ошибку) вылетает неопознанная ошибка (я понял так что, это из-за того, что 2 lookup поля, потому что по одному они работают). Не знаю что делать!!!! Может подскажите что делать(я думал может вносить данные одновременно по какому-нибудь событию, но не знаю по какому и как) и чтобы было понятно для пользователя. И как узнать день недели(пн, вт,..,вс) по дате?
Заранее благодарю!!!!!
Отправлен: 04.06.2007, 10:18
Вопрос задал: Ram (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Примак Руслан Николаевич
Здравствуйте, Ram!
Смогу ответить только по дате: есть функции DayOfWeek и DayOfWeekStr, которые возвращаю т день недели в числовом и символьном вариантах соответственно.

Что же касается основного вашего вопроса, необходимо более подробное рассмотрение, предоставьте проект и текст ошибки.
Ответ отправил: Примак Руслан Николаевич (статус: 2-ой класс)
Ответ отправлен: 04.06.2007, 11:50
Оценка за ответ: 5
Комментарий оценки:
спасибо за это! На счет ошибки: Project gruopa.exe raised exception class EOleException with message 'Ошибка неизвестного типа' Process stopped. .. Возникает сразу после перехода на следующую ячейку по горизонтали в DBGrid-е! Надеюсь вы мне поможите!!!!

Отвечает: Виктор Пырлик
Здравствуйте, Ram!
Не совсем понял в чем проблема, если это так:
Таблица с ключами просто учитывает товар и магазины, при этом ID – это уникальный первичный ключ (в принципе, если логике не противоречит, то тут все поля ключевые).

Тогда, скорее всего, вы просто не учитываете это поле при вставке данных. Можно просто сделать его инкрементным в MS SQL – все равно от него больше нет толку как однозначно идентифицировать запись. Тогда и «ругаться» никто не будет. А поле это можно вообще не показывать – сервер сам будет следить за его обновлением.
-----------------------------------------------------------------------------------------------------
Пожалуйста, расшифровывайте ошибку, еще лучше, просто как есть, так и указывайте – проще будет ответ искать.


---------
Надо пребывать господа, пребывать! Иначе ничего не получится!
Ответ отправил: Виктор Пырлик (статус: 4-ый класс)
Ответ отправлен: 04.06.2007, 21:48
Оценка за ответ: 3
Комментарий оценки:
Ошибка не в инфологической моделе БД а самом исходнике ADOTable в Delphi(видимо он не поддерживает 2 и более Lookup поля). Текст ошибки я написал полностью. На счет инкрементируюших полей Delphi дает другую ошибку - я с ними встречался. Ошибка я думаю из - за Lookup полей в ADOTable(из у меня два и они связаны с разными таблицами одновременно и соответственно). Попробуйте сделать сами и убедитесь(с другими таблицами тоже самое)

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

Если ошибка возникает даже при просмотре данных, тогда Вам поможет представление:

CREATE VIEW vwMain AS
SELECT Main.ID, Main.ID_Mag, Main.ID_Towar, Mag.Name_Mag, Tovar.Name_Tovar
FROM Main, Mag, Tovar
WHERE (Main.ID_Mag = Mag.ID_Mag) AND (Main.ID_Tovar = Tovar.ID_Tovar)

Вы не указали названий своих таблиц, поэтому я предположил, что они называются
Main, Mag, Tovar. Вам нужно заменить эти названия реальными именами таблиц, тогда представление будет создано. Оно свяжет все три таблицы и сделает более удобным просмотр информации. Прочитать данные через него можно так же, как и из обычной таблицы (Вы можете настроить ADOTable на созданное представление). Вносить же информацию лучше всего SQL-запросом вроде такого:

INSERT INTO Main (ID_Mag, ID_Tovar)
VALUES (3, 7)

Но в этом случае легче будет использовать компонент ADOQuery. Если хотите уточнить что-то более подробно, обращайтесь.
Ответ отправил: Delph (статус: 3-ий класс)
Ответ отправлен: 05.06.2007, 09:00
Оценка за ответ: 4
Комментарий оценки:
Проблема не при просмотре, а при редактировании(как только внёс данные в поле и при переходе на другое поле выскакивает ошибка описанная мною в предыдущих комментариях)


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное