|
Вопрос # 1 853/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Такой вопрос. Есть клиент. Построенный на комопнентах
SocketConnection1 + ClientDataSet.
Есть таблица с полем автоприращений числа. Это сиксенс в БД ОРАКЛ. Вопрос как мне с помощью этого комопнента заставить записать число сиквенса следующего по счету в таблицу. Дл этого я спользовал ODAC и проблем не было. Там в компоненте указываешь сиксенс и все. А здесь, как поступить? П-ста доскажите!
 |
Вопрос задал: John (статус: Посетитель)
Вопрос отправлен: 27 августа 2008, 13:50
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 12; последнее сообщение — 29 августа 2008, 15:07; участников в обсуждении: 3.
|
Вадим К (статус: Академик), 27 августа 2008, 17:04 [#1]:
что такое "сиксенс"?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Мережников Андрей (статус: Абитуриент), 27 августа 2008, 18:50 [#2]:
Для чего такие сложности - строить клиент к SQL серверу на сокетах?
|
|
John (статус: Посетитель), 28 августа 2008, 05:33 [#3]:
СИКВЕНС - это герератор чисел. Используется в ORACLE для полей с автоприращением. ОЧЕПЯТКА БЫЛА.
А такая прога нужна. Это будет глобальная система. Сюда будет входит: ТАРИФИКАЦИЯ, ТЕХУЧЕТ АСЛ, ЗАГРУЗКА *.BIL ФАЙЛОВ С ЦАТС, Расчетный абонентский отдел АОТ ТАК......................
|
|
Мережников Андрей (статус: Абитуриент), 28 августа 2008, 05:48 [#4]:
Почему для доступа к Oracle нельзя использовать тот же механизм ADO? Если хотите трехзвенную архитектуру, так можно использовать DataSnap
|
|
John (статус: Посетитель), 28 августа 2008, 05:56 [#5]:
ADO полный отстой. Я использую проффессиональные компоненты ODAC для ОРАКЛА. Я и спользую компоненты вкладки DataSnap.
Но они оказывается не адаптированы для таблиц работы с ораклом.
|
|
Вадим К (статус: Академик), 28 августа 2008, 09:43 [#6]:
АДО - хорошая штука, если использовать к примеру с Access. С Oracle конечно на большой системе они конечно будут главным тормозом.
Цитата:
Я использую проффессиональные компоненты ODAC для ОРАКЛА.
и
Я и спользую компоненты вкладки DataSnap.Но они оказывается не адаптированы для таблиц работы с ораклом.
Значит либо компоненты не проффесиональные (тогда бы DataSnap с ними работали), либо они просто "недоработанные", либо их "дружба" невозможно в следствие разницы в идеологии работы, либо DataSnap просто не предназначены для них.
Я бы порекомендовал не делать голословных утверждений. То есть, когда говорят, что БДЕ плохо - да, это понятно. Но к примеру с АДО - нет, но есть задачи где они действительно плохи.
Теперь собственно по вопросу. Мне не сильно понятно, зачем использовать трехзвенную структуру. Основное приимущество Oracle - это быстрота. А запуская работу с ним через лишний комп - только затормозите всю работу. К тому же он - полноценная серверная СУБД, поэтому никто не мешает работать каждому клиенту с ним персонально.
То есть, с какими целями было решено перейти на такую схему работы.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Мережников Андрей (статус: Абитуриент), 29 августа 2008, 05:55 [#7]:
"...Дл этого я спользовал ODAC и проблем не было..."
А что побудило отказаться от "профессиональных компонентов"?
|
|
Мережников Андрей (статус: Абитуриент), 29 августа 2008, 06:54 [#8]:
Профессиональные компоненты взято в кавычки, чтобы выделить цитату. А по поводу совместной работы DataSnap и ODAC :"Сервер приложений взаимодействует с сервером БД, используя одну из технологий доступа к данным, реализованным в Delphi . Это технологии ADO, BDE, InterBase Express и dbExpress. Разработчик может выбрать наиболее подходящую, исходя из поставленной задачи и параметров сервера БД." Компоненты DataSnap вообще не адаптированы к какой-то конкретной БД. Это делается выбором технологии доступа (см.выше)
|
|
John (статус: Посетитель), 29 августа 2008, 07:06 [#9]:
Да, что вы заладили ADO да ADO.
Вопрос то другой. Я уже много кратно говорил какая разница какая технология................
Как из грида вставить данные в таблицу Oracle. Причем поле Id имеет последовательность (Сиквенс). Табличные Компоненты этой вкладки не могут подключить сиквенс как объект и использовать его.....
Не знаю как правильно описать проблему. Но я понял сам как ее решить................
Придется SQL запросом вставлять данные в таблицу типа..........
INSERT INTO departments VALUES (departments_seq.NEXTVAL, epMame,:ShortName);
SELECT * FROM departments
Запросом и я могу................
А вот как заставить компонент это делать...........
Вот я об этом спрашиваю................
|
|
Мережников Андрей (статус: Абитуриент), 29 августа 2008, 09:45 [#10]:
Действительно, причем здесь ADO? Проблема со знанием SQL. Не знаю как в Oracle, а в MS SQL или в InterBase (при настройке триггера) решается все просто - если в списке полей для присваивания значений при вставке новой записи не указано имя автоинкрементного поля, то его значение вычисляется SQL сервером автоматически. А в ClientDataSet настраивается список полей, которым присваивается значение при update или insert.
|
|
Вадим К (статус: Академик), 29 августа 2008, 14:14 [#11]:
После продолжительных дебатов по аське с John было установленно следующее.
Как сделать с помощью sql запросов он знает. Но он немножко ленив (читайте весь текст для понимания, почему я так написал) и не хочет делать это с помощью их (много букв будет надо писать) и хочет сделать просто с помощью обычного соединения компонентов. Что бы пользователь видел только один грид (dbgrid - ключевое слово в понимании вопроса). Он считает, что если он будет делать с помощью sql запросов, то использовать грид никак нельзя и прийдётся использовать множество edit и кнопку "записать в базу". а пользователю будет сложно. На самом деле всё может быть проще и мы вроде подошли к нескольким решениям, которые он испытывает.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Мережников Андрей (статус: Абитуриент), 29 августа 2008, 15:07 [#12]:
Если для заполнения dbgrid используется запрос, формируемый по нескольким таблицам (и изменения надо вносить сразу в несколько таблиц), то в любом случае без отдельных SQL-зпросов не обойтись. ClentDataSet в данном случае не поможет
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|