|
Добавить новую запись в CA без создания курсора и его заполнения
|
|||
---|---|---|---|
#18+
Я понимаю, что всех уже достал, но что-то после последних разъяснений начал сомневаться...и начал писать на CA...но тут опять столкнулся с такой ситуацией, как добавление записи Вот через ADO ocon = CREATEOBJECT('ADODB.Connection') ocon.OPEN() ors=CREATEOBJECT('ADODB.RecordSet') ors.LockType = 3 ors.activeconnection = ocon ors.Source = "tip_izd" ors.Open() oRS.AddNew oRS.Fields ("tip") = '8' oRS.Fields ("naim_tip") = '23' oRS.Update ors.Close Вот через CA omycad1 = CREATEOBJECT('CursorAdapter') WITH omycad1 .ALIAS = 'tip_izd' .DATASOURCETYPE = 'ODBC' .DATASOURCE = lnconnection .SELECTCMD = 'select tip,naim_tip from tip_izd' .CURSORSCHEMA = "tip c(5), NAIM_tip C(15)" .insertcmd="insert into tip_izd (tip,naim_tip) values ('7','23')" ENDWITH SELECT 0 omycad1.CURSORFILL(.T.) APPEND blank TABLEUPDATE(.F.) Мне непонятно, зачем я должен создавать курсор в CA, описывать его схему и т.д., можно ли как-нибудь добавить новую запись в CA без создания курсора и его заполнения(как в ADO)...или это мелочи по сравнению с другими плюсами CA(хотя какими?) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2008, 08:36 |
|
Добавить новую запись в CA без создания курсора и его заполнения
|
|||
---|---|---|---|
#18+
авторсоздавать курсор в CA, описывать его схему 1.курсор создаем, для того чтобы работать с курсором, ведь фокспро сделан(язык SQL) для работы с родными курсорами. Получаем курсор и работаем с ним/, не задумываясь откуда он получен. 2.схему описываем для явного преобразования данных. Задаем родные для фокспро типы(необходимые нам). авторили это мелочи по сравнению с другими плюсами CA это Вас напрягает? создайте свой класс-наследник от базового класса, в котором создайте методы автоматического подъема и заполнения автоматом необходимых свойств, опять-же в зависимости от каких-то настроек, которые Вы передаете(или чиитаете из какого-то хранилища) во время инициализации объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2008, 09:37 |
|
Добавить новую запись в CA без создания курсора и его заполнения
|
|||
---|---|---|---|
#18+
автор другими плюсами CA(хотя какими?) ох... курсорадаптер - базовый класс, который позволяет создать абстрактные механизмы для работы с источниками данных (родными таблицами, серверами данных, XML) что такое абстракция я думаю Вы понимаете. т.е. позволяет облегчить разработку, сократить трудозатраты. Курсорадаптер имеет механизмы преобразования неродных данных в родные, имеет механизмы автомат-го сохранения произведенных изменений. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2008, 09:43 |
|
Добавить новую запись в CA без создания курсора и его заполнения
|
|||
---|---|---|---|
#18+
У меня встречный вопрос: А как вы собираетесь работать в FoxPro с ADO без использования CursorAdapter? Попробуйте написать программный код или поискать старые примеры на этом форуме. Т.е. что вам надо будет сделать: 1. Подключится к ADO 2. Сформировать RecordSet 3. Каким-то образов "выковырть" данные из RecordSet для удобного отображения этах данных в формах FoxPro (напомню, что FoxPro не умеет работать напрямую с RecordSet) 4. После того, как пользователь изменит данные опять же как-то надо будет исхитрится "запихнуть" эти данные из объектов FoxPro в RecordSet. Причем не вообще все данные, а только измененные. 5. Обновить данные, поскольку они могли быть изменены другим пользователем. А если надо сделать все то же самое не для одной записи, а для нескольких, с целью последующего отображения в Grid? Только пожалуйста, прежде, чем продолжать задавать вопросы, все-таки попробуйте сделать это на практике. Куча "умных" рассуждений с не менее "умными" терминами вроде "абстракция", "наследование", "инкапсуляция" и т.д. и т.п. ничто, в сравнении с личным опытом. Вот и обзаводитесь личным опытом! Попробуйте два варианта работы: с CusorAdapter и без него. И сравните. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2008, 16:10 |
|
Добавить новую запись в CA без создания курсора и его заполнения
|
|||
---|---|---|---|
#18+
Ладно...эту часть пропускаем...я уже дошёл до Update :-)), выбрал из двух таблиц записи в грид, теперь надо что-то изменить, ну тут тривиально нажимается кнопка, уходим в форму редактирования, значения присваиваем из грида, нажимаем "сохранить", первый вариант SQLEXEC(lnconnection,"update...), а как сделать через CA, если указатель грида(состоящего из двух таблиц) стоит на той записи в которой надо изменить данные левой таблицы... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 06:00 |
|
Добавить новую запись в CA без создания курсора и его заполнения
|
|||
---|---|---|---|
#18+
авторесли указатель грида(состоящего из двух таблиц) стоит на той записи в которой надо изменить данные левой таблицы... для каждой таблицы поднимаем свой КАД если в грид сунули источник, в котором приджоинили доп.таблицу (зачем? обычно джоиним справочники), то поднимаем доп. кад для доп.таблицы и в нем синхронизируем изменения и зовем (в транзакции, если необходимо) метод сохранения ... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 09:04 |
|
Добавить новую запись в CA без создания курсора и его заполнения
|
|||
---|---|---|---|
#18+
Почему то мне нравятся аналогии...если я открыл объект Excel, то в нём я открываю сколько захочу таблиц, и мне не надо создавать для каждой таблицы свой объект Excel, хотя и можно...так и здесь, зачем для каждой таблицы свой КАД, одним нельзя обойтись? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 09:54 |
|
Добавить новую запись в CA без создания курсора и его заполнения
|
|||
---|---|---|---|
#18+
ННовичокПочему то мне нравятся аналогии...если я открыл объект Excel, то в нём я открываю сколько захочу таблиц, и мне не надо создавать для каждой таблицы свой объект Excel, хотя и можно...так и здесь, зачем для каждой таблицы свой КАД, одним нельзя обойтись? Аналогии должны быть корректными. Так вот Excel и CA - совершенно некорректная аналогия. СА не содержит в себе данных. Это средство управления курсором. Одним курсором. Данные в курсоре. И только там. И работать надо с данными в курсоре. А вот СА поможет синхронизировать информацию в курсоре с информацией в табличке на сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 10:01 |
|
Добавить новую запись в CA без создания курсора и его заполнения
|
|||
---|---|---|---|
#18+
Код: plaintext
мы делили апельсин ... много нас, а он один. эта долька для ежа, эта долька для ужа, ... а для волка - кожура. патаму что, ... чтобы заставить кад взад апдейтить, инсертить, делейтить необходимо корректно настроить целый ряд свойств. корректно и просто (это предусмотрено разработчиками, придумано так) мы можем настроить св-ва для одной таблички (быстро и просто), иначе - если раскидывать изм-я нужно во множество ..., то нужно будет исхитряться и писать руками команды - а это уже не так просто., ну как-то так... я могу показать как из одного када изменять кучу таблиц - но это не так просто + Вы никогда не сможете получить простую класс-заготовку для таких целей. (повторю, необходимо будет руками генерить команды). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 10:09 |
|
Добавить новую запись в CA без создания курсора и его заполнения
|
|||
---|---|---|---|
#18+
ННовичокПочему то мне нравятся аналогии...если я открыл объект Excel, то в нём я открываю сколько захочу таблиц, и мне не надо создавать для каждой таблицы свой объект Excel, хотя и можно... Вы не на том уровне сравниваете. Во-первых, в среде FoxPro вы можете открыть сколько угодно объектов CursorAdapter и для этого вам не надо создавать новую среду FoxPro. Хотя и можно... Во-вторых, новая таблица Excel - это новый объект. Например, новый лист Excel. То же самое и в FoxPro. Новая таблица - новый CursorAdapter. Есть программная "оболочка". Среда. Это может быть и FoxPro, и Excel. И вот уже внутри этой среды "живут" разные объекты и таблицы. Для Excel - это WorkSheet (листы). Для FoxPro - это рабочие области. На этом уровне все абсолютно одинаково. ННовичоктак и здесь, зачем для каждой таблицы свой КАД, одним нельзя обойтись? Как вы думаете, почему вообще база данных состоит из нескольких таблиц? Иногда многих сотен! А одной нельзя обойтись? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 16:50 |
|
|
start [/forum/topic.php?fid=41&msg=35686896&tid=1587017]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 146ms |
0 / 0 |