Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с курсорадаптером / 15 сообщений из 15, страница 1 из 1
06.06.2011, 16:20
    #37297125
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
Не могу найти причину, почему у меня грид пустой. Вот что я успела наваять В init.
WITH THIS

SET STEP ON
.AddProperty('lo_CA')
.lo_CA = CREATEOBJECT("CursorAdapter")

if vartype(.lo_CA)='O'
.lo_CA.Alias='fin'
.lo_CA.DataSourceType = 'ODBC'
.lo_CA.DataSource=PubCon
.lo_CA.SelectCmd = 'select * from test_fin order by fin_id, god'
.lo_CA.Tables = 'count.dbo.test_fin'
.lo_CA.keyFieldList = 'fin_id'

IF .grid1.Readonly= !mnr.d71.p3
FOR i = 1 TO .grid1.COLUMNCOUNT
IF .grid1.COLUMNS(i).CONTROLSOURCE="fin.PAYNUM" OR .grid1.COLUMNS(i).CONTROLSOURCE="fin.PAYDATE" then
.grid1.COLUMNS(i).readonly=.f.
ENDIF
ENDFOR
.lo_CA.UpdateNameList=" LPUCODE fin.LPUCODE, DATE fin.DATE, SUM fin.SUM, PRIM fin.PRIM, SKIND fin.SKIND, NDOC fin.NDOC, RF fin.RF, GOD fin.GOD, PRIZ fin.PRIZ, OSTATOK fin.OSTATOK"
.lo_CA.UpdatableFieldList="LPUCODE, DATE, SUM, PRIM, SKIND, NDOC, RF, GOD, PRIZ, OSTATOK"
ENDIF

IF .grid1.Readonly= !mnr.d71.p2
FOR i = 1 TO .grid1.COLUMNCOUNT
IF .grid1.COLUMNS(i).CONTROLSOURCE="fin.PAYNUM" OR .grid1.COLUMNS(i).CONTROLSOURCE="fin.PAYDATE" then
.grid1.COLUMNS(i).readonly=.f.
ENDIF
ENDFOR

.lo_CA.UpdateNameList="PAYDATE fin.PAYDATE, PAYNUM fin.PAYNUM"
.lo_CA.UpdatableFieldList="PAYDATE, PAYNUM"

ENDIF


if .lo_CA.cursorfill(.t.)
.Grid1.RecordSource=.lo_CA.Alias
.grid1.SetFocus()

else
messagebox('Îøèáêà ïðè âûïîëíåíèè ìåòîäà cursorfill ÊÀ')
return .f.
endif


ENDIF

ENDWITH
...
Рейтинг: 0 / 0
07.06.2011, 11:15
    #37298270
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
Напишите тестовую программку (файл PRG) примерно такого вида

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
PubCon = ...

oCA = CREATEOBJECT("CursorAdapter")  
m.oCA.DataSourceType="ODBC"  
m.oCA.DataSource = PubCon 
m.oCA.SelectCmd = 'select * from test_fin order by fin_id, god'  
? m.oCA.CursorFill()  
BROWSE

В открывшемся Browse-окне хоть что-нибудь отображается?
...
Рейтинг: 0 / 0
07.06.2011, 12:57
    #37298557
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
ВладимирМ,

В browse есть данные.
...
Рейтинг: 0 / 0
07.06.2011, 13:20
    #37298630
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
Теперь выбросите все "лишнее" из метода инициализации, оставив только минимально необходимые настройки

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ThisForm.AddProperty('lo_CA')
ThisForm.lo_CA = CREATEOBJECT("CursorAdapter")

ThisForm.lo_CA.Alias='fin'
ThisForm.lo_CA.DataSourceType="ODBC"  
ThisForm.lo_CA.DataSource = PubCon 
ThisForm.lo_CA.SelectCmd = 'select * from test_fin order by fin_id, god'  

ThisForm.Grid1.RecordSource = ""
ThisForm.lo_CA.CursorFill()
ThisForm.Grid1.RecordSource = ThisForm.lo_CA.Alias
ThisForm.Grid1.Columns( 1 ).ControlSource = ThisForm.lo_CA.Alias + ".PAYNUM"
ThisForm.Grid1.Columns( 2 ).ControlSource = ThisForm.lo_CA.Alias + ".PAYDATE"
...
Рейтинг: 0 / 0
07.06.2011, 13:20
    #37298631
Sea_Cat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
НадеждаМ,

.lo_CA.cursorfill(.t.) - указание параметра .t. - требует указывать CURSORSHEMA, при ее отсутствии выдается ошибка, отловить которую можно через AERROR.
Попробуйте CURSORFILL без параметров.
...
Рейтинг: 0 / 0
07.06.2011, 14:13
    #37298795
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
Спасибо, вроде все в порядке.
...
Рейтинг: 0 / 0
07.06.2011, 15:25
    #37298962
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
А как правильно обновить или добавить данные в источнике данных через курсорадаптер?

в click кнопки добавить написала
append blank
TABLEUPDATE() ?
...
Рейтинг: 0 / 0
07.06.2011, 15:27
    #37298965
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
в init формы указала:
.lo_CA.BufferModeOverride = 3
.lo_CA.AllowUpdate=.t.
.lo_CA.UpdateType=1
.lo_CA.keyFieldList = 'fin_id'
.lo_CA.UpdateNameList=" LPUCODE fin.LPUCODE, DATE fin.DATE, SUM fin.SUM, PRIM fin.PRIM, SKIND fin.SKIND, NDOC fin.NDOC, RF fin.RF, GOD fin.GOD, PRIZ fin.PRIZ, OSTATOK fin.OSTATOK"
.lo_CA.UpdatableFieldList=" LPUCODE, DATE, SUM, PRIM, SKIND, NDOC, RF, GOD, PRIZ, OSTATOK"
...
Рейтинг: 0 / 0
06.10.2011, 13:52
    #37470842
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
Добрый день всем. Продолжаю изучать СА. Добавила в тестовый проект вручную класс на основе cursoradapter, настроила его свойства. Вроде все нормально обновляется, добавляется, просматривается. Но только вот возник вопрос, можно ли один класс настроить на работу с двумя независимыми таблицами расположенными на одной форме? А то не хочется плодить нескоьлко классов.
...
Рейтинг: 0 / 0
06.10.2011, 17:20
    #37471399
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
В принципе, возможно. Только вот, это довольно сложная задача. Имеет смысл этим заниматься только в том случае, если Вы пытаетесь сделать некий конструктор запросов. Ну, в смысле, пользователи сами будут конструировать запросы через некий интерфейс, а Вы, через этот универсальный класс, использовать то, что пользователи "наконструировали".

Если Вы пока только изучаете CursorAdapter, то проще (во всех смыслах) именно "плодить несколько классов". Свой класс CursorAdapter для каждой таблицы.
...
Рейтинг: 0 / 0
07.10.2011, 09:19
    #37472156
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
ВладимирМВ принципе, возможно. Только вот, это довольно сложная задача. Имеет смысл этим заниматься только в том случае, если Вы пытаетесь сделать некий конструктор запросов. Ну, в смысле, пользователи сами будут конструировать запросы через некий интерфейс, а Вы, через этот универсальный класс, использовать то, что пользователи "наконструировали".

Если Вы пока только изучаете CursorAdapter, то проще (во всех смыслах) именно "плодить несколько классов". Свой класс CursorAdapter для каждой таблицы.

Я пока только хочу лишь отобразить данные двух несвязанных таблиц через один CA и чтобы поиск по ним можно было делать.
...
Рейтинг: 0 / 0
07.10.2011, 11:00
    #37472396
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
НадеждаМЯ пока только хочу лишь отобразить данные двух несвязанных таблиц через один CA и чтобы поиск по ним можно было делать.
Не "мудрите". Делайте два CA.
...
Рейтинг: 0 / 0
07.10.2011, 12:45
    #37472678
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
НадеждаМВладимирМВ принципе, возможно. Только вот, это довольно сложная задача. Имеет смысл этим заниматься только в том случае, если Вы пытаетесь сделать некий конструктор запросов. Ну, в смысле, пользователи сами будут конструировать запросы через некий интерфейс, а Вы, через этот универсальный класс, использовать то, что пользователи "наконструировали".

Если Вы пока только изучаете CursorAdapter, то проще (во всех смыслах) именно "плодить несколько классов". Свой класс CursorAdapter для каждой таблицы.

Я пока только хочу лишь отобразить данные двух несвязанных таблиц через один CA и чтобы поиск по ним можно было делать.

можно вопрос, не просто так, интересно.

таблиц - две.

ну ладно, потом их стописят будет, возможно ...

а курсорадаптер, то почему именно один?
хочется?
...
Рейтинг: 0 / 0
07.10.2011, 13:01
    #37472720
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
прошелмимоНадеждаМпропущено...


Я пока только хочу лишь отобразить данные двух несвязанных таблиц через один CA и чтобы поиск по ним можно было делать.

можно вопрос, не просто так, интересно.

таблиц - две.

ну ладно, потом их стописят будет, возможно ...

а курсорадаптер, то почему именно один?
хочется?

Да именно, хочется попробовать.
...
Рейтинг: 0 / 0
07.10.2011, 13:06
    #37472728
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с курсорадаптером
НадеждаМпрошелмимопропущено...


можно вопрос, не просто так, интересно.

таблиц - две.

ну ладно, потом их стописят будет, возможно ...

а курсорадаптер, то почему именно один?
хочется?

Да именно, хочется попробовать.


аааа, - пробуйте.
хочется - это аргумент.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с курсорадаптером / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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