Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.08.28;
Скачать: [xml.tar.bz2];

Вниз

как программно переключить DBEdit от 1го ист. данных к другому   Найти похожие ветки 

 
Andrey_1   (2003-08-01 10:19) [0]

В DataModule1 содержатся:
Table1 -> DataSource1;
Table2 -> DataSource2;
Table3 -> DataSource3;
На Form1:
DBGrid1,DBGrid2, DBGrid3, DBEdit1, DBEdit2, DBNavigator1
Нужно чтобы
при получении фокуса DBGrid1, DBEdit1, DBEdit2 получали данные из DataSource1;
при получении фокуса DBGrid2, DBEdit1, DBEdit2 получали данные из DataSource2;
при получении фокуса DBGrid3, DBEdit1, DBEdit2 получали данные из DataSource3;

Для этого пишу следующий код и вешаю на OnEnter

procedure TForm1.DBGrid1Enter(Sender: TObject);
begin
DBNavigator1.DataSource:=Datamodule1.DataSource1;
with DBEdit1 do
begin
DataSource:=Datamodule1.DataSource1;
DataField:="Color"; //имя поля1 таблицы1
end;
with DBEdit2 do
begin
Datasource:=DataModule1.DataSource1;
DataField:="Description" //имя поля2 таблицы1
end;
end;

procedure TForm1.DBGrid2Enter(Sender: TObject);
begin
DBNavigator1.DataSource:=Datamodule1.DataSource2;
with DBEdit1 do
begin
DataSource:=Datamodule1.DataSource2;
DataField:="Defect"; //имя поля1 таблицы2
end;
with DBEdit2 do
begin
DataSource:=Datamodule1.DataSource2;
DataField:="Description"; //имя поля2 таблицы2
end;
end;

procedure TForm1.DBGrid3Enter(Sender: TObject);
begin
DBNavigator1.DataSource:=Datamodule1.DataSource3;
with DBEdit1 do
begin
DataSource:=Datamodule1.DataSource3;
DataField:="Model"; //имя поля1 таблицы3
end;
with DBEdit2 do
begin
DataSource:=Datamodule1.DataSource3;
DataField:="Description"; //имя поля2 таблицы3
end;
end;

но при переключении между гридами выдает следующее сообщение

---------------------------
Debugger Exception Notification
---------------------------
Project ProjectExample.exe raised exception class EDatabaseError with message "DBEdit1: Field "Color" not found". Process stopped. Use Step or Run to continue.
---------------------------
OK Help


 
Zacho   (2003-08-01 10:22) [1]

Я тебе уже ответил мылом :-) Проверь почту.
Но могу и повторить:
with DBEdit1 do
begin
DataSource:=nil;
DataField:="Color"; //имя поля1 таблицы1
DataSource:=Datamodule1.DataSource1;
end;
и т.д. ...


 
KDS   (2003-08-01 11:12) [2]

Я же написал уже как... читай почту вот повторяю еще раз:

обнуляй название поля перед каждой сменой DataSource
потому что... сам подумай почему

DataField:="";
DataSource:=Datamodule1.DataSourceColor;
DataField:="Color";


 
Andrey_1   (2003-08-01 11:28) [3]

спасибо! потому и спрашиваю, что мыло не работает


 
Zacho   (2003-08-01 11:42) [4]

Кстати, рабочие оба варианта: и Zacho © (01.08.03 10:22) и KDS © (01.08.03 11:12)
Так что выбирай по вкусу :-)


 
Andrey_1   (2003-08-01 13:31) [5]

у меня работает
DataField:="";
DataSource:=Datamodule1.DataSourceColor;
DataField:="Color";

a код
DataSource:=nil;
DataField:="Color"; //имя поля1 таблицы1
DataSource:=Datamodule1.DataSource1;

выдает
Debugger Exception Notification
---------------------------
Project ProjectExample.exe raised exception class EDatabaseError with message "DBEdit1: Field "Color" not found". Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
но все равно спасибо огрррооомное, выручили.


 
Zacho   (2003-08-01 13:38) [6]


> Andrey_1 (01.08.03 13:31)

Странно.. А у меня работает. Я выслал тебе модуль, если любопытно - посмотри. Только что еще раз проверил - работает, зараза :) Правда у меня D6, но не думаю, что в этом дело.


 
MsGuns   (2003-08-01 13:49) [7]

>Zacho © (01.08.03 13:38)

Чтобы не зависеть от капризов винды, железа, начальника, любимой мозоли и т.д. рекомендую всегда при переключениях НД в датасорсе перестраивать коллекции колонок НД.

with Form1.DBGrid1 do
begin
DataSource:=nil;
RebuildColumns;
DataSource:=...;
RebuildColumns;
end;







 
Zacho   (2003-08-01 13:54) [8]


> MsGuns © (01.08.03 13:49)

Так дело в том, что там не DBGrid, а DBEdit, у которого колонок, естественно, нет.
А для DBGrid"a - действительно ценный совет.


 
KDS   (2003-08-01 14:40) [9]

a код
DataSource:=nil;
DataField:="Color"; //имя поля1 таблицы1
DataSource:=Datamodule1.DataSource1;
выдает
Debugger Exception Notification


Просто подумать надо было...
Ошибка возникает потому что DataField:="Color" заполнено
но при этом DataSource:=nil;
т.е. получается поле для неопределенной таблицы вот и пишет
"DBEdit1: Field "Color" not found"
а наоборот можно: источник определить, а поле - нет!
Порядок присвоения тоже играет роль. И всего то ;-)))
у меня работает
DataField:="";
DataSource:=Datamodule1.DataSourceColor;
DataField:="Color";



 
Andrey_1   (2003-08-01 15:22) [10]

спасибо всем!
ЧЕМ МНОГО ЗНАТЬ - ЛУЧШЕ ПРАВИЛЬНО ДУМАТЬ.


 
MsGuns   (2003-08-01 15:27) [11]

>Zacho © (01.08.03 13:54)
>Так дело в том, что там не DBGrid, а DBEdit, у которого колонок, естественно, нет.

Читаем еще раз внимательно сабж.
но при переключении между гридами выдает следующее сообщение

По-видимому, именно при обращении к свойствам "переключенного", но не перестроенного по колонкам грида и проистекает этот эксепшн

Кстати, подобная же фигня будет, если попробовать "переключить" указатель на поле у DBEdit`а после смены датасорса или изменения запроса. Вообще все эти смены - замены и источников и НД - от лукавого. Попытка "сделать красиво" там, где надо делать просто и надежно. Ну это ИМХО ессно ;))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.08.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
4-92316
Fdu4
2003-06-24 21:11
2003.08.28
подмена параметров в CallNextHookEx


14-92235
Maxja
2003-08-08 11:32
2003.08.28
Меня очень интересует такой вопрос. Можно ли написать программу..


14-92176
Zhenka
2003-08-11 12:30
2003.08.28
Соитие файлов


11-92093
Ал
2002-12-17 21:09
2003.08.28
При возникновении except в try except отладчик зависает


14-92245
Nucl
2003-08-11 15:33
2003.08.28
Организация форума





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский