Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Добавить новую запись в CA без создания курсора и его заполнения / 10 сообщений из 10, страница 1 из 1
01.12.2008, 08:36
    #35684416
ННовичок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить новую запись в CA без создания курсора и его заполнения
Я понимаю, что всех уже достал, но что-то после последних разъяснений начал сомневаться...и начал писать на 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(хотя какими?)
...
Рейтинг: 0 / 0
01.12.2008, 09:37
    #35684495
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить новую запись в CA без создания курсора и его заполнения
авторсоздавать курсор в CA, описывать его схему

1.курсор создаем, для того чтобы работать с курсором, ведь фокспро
сделан(язык SQL) для работы с родными курсорами.
Получаем курсор и работаем с ним/, не задумываясь откуда он получен.
2.схему описываем для явного преобразования данных. Задаем родные для
фокспро типы(необходимые нам).

авторили это мелочи по сравнению с другими плюсами CA
это Вас напрягает?
создайте свой класс-наследник от базового класса, в котором создайте
методы автоматического подъема и заполнения автоматом необходимых свойств,
опять-же в зависимости от каких-то настроек, которые
Вы передаете(или чиитаете из какого-то хранилища) во время инициализации объекта.
...
Рейтинг: 0 / 0
01.12.2008, 09:43
    #35684506
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить новую запись в CA без создания курсора и его заполнения
автор другими плюсами CA(хотя какими?)

ох...

курсорадаптер - базовый класс, который позволяет создать абстрактные механизмы
для работы с источниками данных (родными таблицами, серверами данных, XML)

что такое абстракция я думаю Вы понимаете.

т.е. позволяет облегчить разработку, сократить трудозатраты.

Курсорадаптер имеет механизмы преобразования неродных данных в родные,
имеет механизмы автомат-го сохранения произведенных изменений.
...
Рейтинг: 0 / 0
01.12.2008, 16:10
    #35685842
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить новую запись в CA без создания курсора и его заполнения
У меня встречный вопрос: А как вы собираетесь работать в FoxPro с ADO без использования CursorAdapter? Попробуйте написать программный код или поискать старые примеры на этом форуме.

Т.е. что вам надо будет сделать:

1. Подключится к ADO
2. Сформировать RecordSet
3. Каким-то образов "выковырть" данные из RecordSet для удобного отображения этах данных в формах FoxPro (напомню, что FoxPro не умеет работать напрямую с RecordSet)
4. После того, как пользователь изменит данные опять же как-то надо будет исхитрится "запихнуть" эти данные из объектов FoxPro в RecordSet. Причем не вообще все данные, а только измененные.
5. Обновить данные, поскольку они могли быть изменены другим пользователем.

А если надо сделать все то же самое не для одной записи, а для нескольких, с целью последующего отображения в Grid?

Только пожалуйста, прежде, чем продолжать задавать вопросы, все-таки попробуйте сделать это на практике. Куча "умных" рассуждений с не менее "умными" терминами вроде "абстракция", "наследование", "инкапсуляция" и т.д. и т.п. ничто, в сравнении с личным опытом. Вот и обзаводитесь личным опытом! Попробуйте два варианта работы: с CusorAdapter и без него. И сравните.
...
Рейтинг: 0 / 0
02.12.2008, 06:00
    #35686809
ННовичок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить новую запись в CA без создания курсора и его заполнения
Ладно...эту часть пропускаем...я уже дошёл до Update :-)), выбрал из двух таблиц записи в грид, теперь надо что-то изменить, ну тут тривиально нажимается кнопка, уходим в форму редактирования, значения присваиваем из грида, нажимаем "сохранить", первый вариант SQLEXEC(lnconnection,"update...), а как сделать через CA, если указатель грида(состоящего из двух таблиц) стоит на той записи в которой надо изменить данные левой таблицы...
...
Рейтинг: 0 / 0
02.12.2008, 09:04
    #35686896
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить новую запись в CA без создания курсора и его заполнения
авторесли указатель грида(состоящего из двух таблиц) стоит на той записи в которой надо изменить данные левой таблицы...

для каждой таблицы поднимаем свой КАД

если в грид сунули источник, в котором приджоинили доп.таблицу (зачем? обычно джоиним справочники), то поднимаем доп. кад для доп.таблицы и в нем синхронизируем изменения
и зовем (в транзакции, если необходимо) метод сохранения ...
...
Рейтинг: 0 / 0
02.12.2008, 09:54
    #35686967
ННовичок
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить новую запись в CA без создания курсора и его заполнения
Почему то мне нравятся аналогии...если я открыл объект Excel, то в нём я открываю сколько захочу таблиц, и мне не надо создавать для каждой таблицы свой объект Excel, хотя и можно...так и здесь, зачем для каждой таблицы свой КАД, одним нельзя обойтись?
...
Рейтинг: 0 / 0
02.12.2008, 10:01
    #35686977
Добавить новую запись в CA без создания курсора и его заполнения
ННовичокПочему то мне нравятся аналогии...если я открыл объект Excel, то в нём я открываю сколько захочу таблиц, и мне не надо создавать для каждой таблицы свой объект Excel, хотя и можно...так и здесь, зачем для каждой таблицы свой КАД, одним нельзя обойтись?
Аналогии должны быть корректными. Так вот Excel и CA - совершенно некорректная аналогия.
СА не содержит в себе данных. Это средство управления курсором. Одним курсором. Данные в курсоре. И только там. И работать надо с данными в курсоре. А вот СА поможет синхронизировать информацию в курсоре с информацией в табличке на сервере.
...
Рейтинг: 0 / 0
02.12.2008, 10:09
    #35686989
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить новую запись в CA без создания курсора и его заполнения
Код: plaintext
зачем для каждой таблицы свой КАД

мы делили апельсин ...
много нас, а он один.
эта долька для ежа,
эта долька для ужа, ...
а для волка - кожура.

патаму что, ...
чтобы заставить кад взад апдейтить, инсертить, делейтить
необходимо корректно настроить целый ряд свойств.
корректно и просто (это предусмотрено разработчиками, придумано так)
мы можем настроить св-ва для одной таблички (быстро и просто),
иначе - если раскидывать изм-я нужно во множество ...,
то нужно будет исхитряться и писать руками команды - а это
уже не так просто., ну как-то так...

я могу показать как из одного када изменять кучу таблиц - но это не так просто
+ Вы никогда не сможете получить простую класс-заготовку
для таких целей. (повторю, необходимо будет руками генерить команды).
...
Рейтинг: 0 / 0
02.12.2008, 16:50
    #35688582
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавить новую запись в CA без создания курсора и его заполнения
ННовичокПочему то мне нравятся аналогии...если я открыл объект Excel, то в нём я открываю сколько захочу таблиц, и мне не надо создавать для каждой таблицы свой объект Excel, хотя и можно...
Вы не на том уровне сравниваете.

Во-первых, в среде FoxPro вы можете открыть сколько угодно объектов CursorAdapter и для этого вам не надо создавать новую среду FoxPro. Хотя и можно...

Во-вторых, новая таблица Excel - это новый объект. Например, новый лист Excel. То же самое и в FoxPro. Новая таблица - новый CursorAdapter.

Есть программная "оболочка". Среда. Это может быть и FoxPro, и Excel. И вот уже внутри этой среды "живут" разные объекты и таблицы.

Для Excel - это WorkSheet (листы). Для FoxPro - это рабочие области.

На этом уровне все абсолютно одинаково.

ННовичоктак и здесь, зачем для каждой таблицы свой КАД, одним нельзя обойтись?
Как вы думаете, почему вообще база данных состоит из нескольких таблиц? Иногда многих сотен! А одной нельзя обойтись?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Добавить новую запись в CA без создания курсора и его заполнения / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]