powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отображение в таблице изменений сделаных в связаном гриде
18 сообщений из 18, страница 1 из 1
Отображение в таблице изменений сделаных в связаном гриде
    #34427102
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запутался в трёх соснах.
Есть грид, к нему привязана таблица MyTab (fld CHAR(75)):
ThisForm.Grid1.RecordSource='MyTab'
Редактирую запись в гриде (набираю текст в поле fld), нажимаю сохранить (передача данных из таблицы MS SQL), при этом смотрю значение поля fld, оказывается оно пустое, хотя в гриде для этой записи есть текст. Если сделать:
SELECT MyTab
BROWSE
данные появляются.
Как это обяснить? Где собака зарыта?
Большое спасибо!
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34427162
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что происходит

при нажатии Сохранить??

код покажите

и как Вы и чего привязываете

у Вас РВ??
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34427192
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привязываю:
WITH ThisFormSet.Form1.Grid1
ThisFormSet.Form1.Grid1.RecordSource = ''

.RecordSource = 'tab_Mb'
.Column1.ControlSource = 'tab_Mb.br'
.Column2.ControlSource = 'tab_Mb.mb'
.Column2.SetFocus
ENDWITH

При редактировании записи в гриде запоминаю номер строки:
SELECT _Mb
STORE RECNO() ThisFormSet.nRec

Сохраняю:
DECLARE uX(2)

SELECT * FROM tab_Mb WHERE RECNO()=ThisFormSet.nRec INTO CURSOR CurTmpSav
STORE br TO uX(1)
STORE tab_Mb.mb TO uX(2)

nR = SQLEXEC(_Screen.nCon_DCEX,'UPDATE spr_nmb SET mb=?uX(2) WHERE br=?uX(2)')
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34427225
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Редактируется поле tab_Mb.mb, проблемма иммено в нём, данные не отображаются. Отображаются только после BROWSE или когда по завершению ввода текста в ячейку грида нажать ENTER, тогда всё попадает нормально
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34427267
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если у Вас 8 или 9 версия лисы, то
поиграйтесь с этим примером

это КурсорАдаптер

поиском прочитайте зачем это нужно
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34427292
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

У как все запущено !!!
Зачем такие сложности ?
для чего эти запоминания номера записи , отборки в курсоры и потом в массивы ?
в общем-то достаточно просто

nR = SQLEXEC(_Screen.nCon_DCEX,'UPDATE spr_nmb SET mb=?tab_Mb.mb WHERE br=?tab_Mb.br')

Кстати в приведенном коде есть нестыковки
В гриде источник
.RecordSource = 'tab_Mb'
...
Запоминаете recno вы
SELECT _Mb
STORE RECNO() ThisFormSet.nRec
...
nR = SQLEXEC(_Screen.nCon_DCEX,'UPDATE spr_nmb SET mb=?uX(2) WHERE br=?uX(2) ')
Тут непонятно - почему и там и там uX(2) ?


Гораздо проще построить Remote View или если у вас VFP 8-9 использовать CursorAdapter.
Но если все-таки хотите сделать по своему, уточните - где какой код у вас "вызывается", т.е. в каких методах и каких объектов.
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34427333
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 -=AlexiS=-

видели бы Вы бубны,
когда народ пытается продернуть
локал после отработки ХП

понакурятся травы ...
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428009
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В методе InteractiveChange обекта Grid1.Column2.Text1 написал следующий текст:
cX1=This.Value
cX2=tab_mb.mb
WAIT This.Value+CHR(13)+tab_mb.mb WINDOW NOWAIT
когда в этом обьекту пишу текст, переменная cX1 отображает этот текст, а - cX2 нет.
Я думал что данные сразу при вводе в text грида попадают в связаную таблицу, оказывается в моём случае это не так. Подскажите в какой момент вводимые в грид данные появляются в таблице? Знаю что если сделать BROWSE этой таблице, то данные появляются. Какой тут принцып работы?
Болшьшое спасибо!
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428032
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Они там появляются сразу после выхода из текстбокса. Так как выхода еще не было, то ничего и не меняется.
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428038
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
PUBLIC oform1

oform1=NEWOBJECT("form1")
oform1.Show
RETURN


DEFINE CLASS form1 AS form


	Top =  0 
	Left =  0 
	Height =  250 
	Width =  481 
	DoCreate = .T.
	Caption = "Form1"
	Name = "Form1"


	ADD OBJECT grid1 AS grid WITH ;
		ColumnCount =  3 , ;
		Height =  200 , ;
		Left =  24 , ;
		Top =  24 , ;
		Width =  276 , ;
		Name = "Grid1", ;
		Column1.Name = "Column1", ;
		Column2.Name = "Column2", ;
		Column3.Name = "Column3"


	ADD OBJECT form1.grid1.column1.header1 AS header WITH ;
		Caption = "Header1", ;
		Name = "Header1"


	ADD OBJECT form1.grid1.column1.text1 AS textbox WITH ;
		BorderStyle =  0 , ;
		Margin =  0 , ;
		ForeColor = RGB( 0 , 0 , 0 ), ;
		BackColor = RGB( 255 , 255 , 255 ), ;
		Name = "Text1"


	ADD OBJECT form1.grid1.column2.header1 AS header WITH ;
		Caption = "Header1", ;
		Name = "Header1"


	ADD OBJECT form1.grid1.column2.text1 AS textbox WITH ;
		BorderStyle =  0 , ;
		Margin =  0 , ;
		ForeColor = RGB( 0 , 0 , 0 ), ;
		BackColor = RGB( 255 , 255 , 255 ), ;
		Name = "Text1"


	ADD OBJECT form1.grid1.column3.header1 AS header WITH ;
		Caption = "Header1", ;
		Name = "Header1"


	ADD OBJECT form1.grid1.column3.text1 AS textbox WITH ;
		BorderStyle =  0 , ;
		Margin =  0 , ;
		ForeColor = RGB( 0 , 0 , 0 ), ;
		BackColor = RGB( 255 , 255 , 255 ), ;
		Name = "Text1"


	ADD OBJECT text1 AS textbox WITH ;
		ControlSource = "tt.t", ;
		Height =  23 , ;
		Left =  348 , ;
		Top =  48 , ;
		Width =  100 , ;
		Name = "Text1"


	ADD OBJECT text2 AS textbox WITH ;
		ControlSource = "tt.s", ;
		Height =  23 , ;
		Left =  348 , ;
		Top =  84 , ;
		Width =  100 , ;
		Name = "Text2"


	ADD OBJECT text3 AS textbox WITH ;
		ControlSource = "tt.p", ;
		Height =  23 , ;
		Left =  348 , ;
		Top =  132 , ;
		Width =  100 , ;
		Name = "Text3"


	PROCEDURE Load
		create cursor tt (t i, s i, p i)

		insert into tt values ( 1 , 2 , 3 )
		insert into tt values ( 2 , 3 , 4 )
		insert into tt values ( 3 , 5 , 6 )

		select tt
		go top
	ENDPROC


	PROCEDURE grid1.AfterRowColChange
		LPARAMETERS nColIndex
		thisform.text1.refresh()
		thisform.text2.refresh()
		thisform.text3.refresh()
	ENDPROC


ENDDEFINE
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428045
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после того как вы этот самый ввод завершите.
ну никак ни в InteractiveChange .
Изменения пойдут после Valid .
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428134
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Окончание ввода наступает тогда, когда text грида теряет фокус, так?
У меня на форме кроме грида ничего нет, данные на сервер я передаю по нажатию на пункт меню:
ON SELECTION PAD pad11 OF MaineMenu oFrm1.SavClmn()

Метод oFrm1.SavClmn() следующий (по совету -=AlexiS=- я его переписал, большое спасибо):
nR = SQLEXEC(_Screen.nCon_DCEX,'UPDATE spr_nmb SET mb=?tab_mb.mb WHERE cex=?oFrm.cCex AND br=?tab_mb.br')

Получается text грида фокус не теряет и введённые данные не попадают в tab_mb. Может написать:
KEYBOARD{TAB}
nR = SQLEXEC(_Screen.nCon_DCEX,'UPDATE spr_nmb SET mb=?tab_mb.mb WHERE cex=?oFrm.cCex AND br=?tab_mb.br')

но так тоже не работает. Как тут быть?
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428146
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 shanton

Вы что решили придумать новый велосипед???

есть курсорадаптер
там Вы можете установить
2 типа буферизации (по строке или на всю таблицу)

и не нужно отслеживать никаких нащатий и событий,
лиса за Вас все сделает

ну в самом-то деле,
перестаньте себя и лису мичить
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428162
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если фокс не 9-ый? У меня правда 9-ый, но с курсорадаптером пока не дружу, будет время постараюсь освоить. Счас время поджимает... Застрял на пустом месте...
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428195
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну неужто плясать
с бубном на пустом месте есть время,
а заняться изучением принципа работы курсорадаптера нет???

а удалять и вставлять также руками будете??
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428225
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это пункт меню , то потеря фокуса не происходит.
И это правильно - иначе как пользоваться например меню "Правка".
Вообще-тото правильно бы было перенести все на форму- создать кнопки Добавить/Удалить /Сохранить и там обрабатывать.
И прислушайтесь наконец к советам- пользуйтесь CA , как для начинающего - это проше и быстрее.
Поищите по форуму - много раз обсуждалось,
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428320
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде чем брать данные с таблицы, в которую я с грида их внёс, я этот грид:
ThisForm.Grid1.RecordSource=''
а дальше:
nR = SQLEXEC(_Screen.nCon_DCEX,'UPDATE spr_nmb SET mb=?tab_mb.mb WHERE cex=?oFrm.cCex AND br=?tab_mb.br')
и всё нормально. Извените шо морочил голову.
Спасибо за комплемент:
авторИ прислушайтесь наконец к советам- пользуйтесь CA , как для начинающего - это проше и быстрее
Четыры года уже как начинающий. Да... как научился так и работаю...
Но всё равно спасибо, когда-то надо начинать правильно писать!
...
Рейтинг: 0 / 0
Отображение в таблице изменений сделаных в связаном гриде
    #34428335
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для завершения ввода в Grid помогает "передергивание" указателя записи

Код: plaintext
1.
2.
select tab_Mb
GO Recno()

Хотя, согласен со всеми ответившими, слишком уж все сложно сделано. Лучше переделать на CursorAdapter или хотя бы Remote View.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отображение в таблице изменений сделаных в связаном гриде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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