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

Вниз

ADODataSet, ХП, DBEdit   Найти похожие ветки 

 
Инна   (2003-05-05 17:48) [0]

Guest на сервере есть хп с параметрами, на клиенте - ADODataSet, определяются при выборе из Комбобокса. ADODataSet "разбрасывается" на несколько DBEdit. Так вот 1. нельзя определить поле источника в эдите, пока не определяется параметр. я ставлю значения параметров по 1, лишь бы "отвязалось", но жутко сомневаюсь, что это нормально.
2. при изменении хп на сервере нужно заново определять параметры, которые не менялись, т.е. делать то же самое. а как же "использование связки хп+ADODataSet позволит вам менять хп на сервере и не трогать клиентов"???
Да. клиент Delphi 6, сервер 2000


И еще, как сделать так, чтобы в зависимости от галочки (т.е. = True) можно было редактировать данные в DBEdite???


 
WarLord   (2003-05-05 17:58) [1]


> И еще, как сделать так, чтобы в зависимости от галочки (т.е.
> = True) можно было редактировать данные в DBEdite???

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
DBEdit1.ReadOnly:=CheckBox1.Checked;
end;

остальное, сорри, ничего не понял :(


 
Инна   (2003-05-06 01:50) [2]

попытаюсь объяснить:
у меня на форме ADODataSet, который раскидывается на несколько DBEditов. и вот эти эдиты редактировать не дают в принципе. я подозреваю, что дело в запросе, т.к. я пробовала то же самое с простым запросом и все работало
запрос:
select distinct rasdispotok.code_of_dis, coalesce(disc0.name,"-") as Name_of_dis,
coalesce(disc0.full_name,"-") as FullName_of_dis,

coalesce(lec.ID,"-") as LID,
coalesce(lec.subs,"-") as subs,
coalesce(lec.unions,"-") as unions,
coalesce(lec.hours,"-") as l_h, coalesce(p1.name,"-") as Lector,


coalesce(sems.ID,"-") as SID,
coalesce(sems.subs,"-") as subs,
coalesce(sems.unions,"-") as unions,
coalesce(sems.hours,"-") as s_h, coalesce(p2.name,"-") as Seminarist,

coalesce(labs.ID,"-") as LAID,
coalesce(labs.subs,"-") as subs,
coalesce(labs.unions,"-") as unions,
coalesce(labs.hours,"-") as la_h, coalesce(p3.name,"-") as LabPrepod

from rasdispotok
left outer join lec on (lec.code_of_dis=rasdispotok.code_of_dis
and lec.code_of_group=198)
left outer join sems on (sems.code_of_dis=rasdispotok.code_of_dis
and sems.code_of_group=198)
left outer join labs on (labs.code_of_dis=rasdispotok.code_of_dis
and labs.code_of_group=198)
left outer join prepodavatel p1 on (p1.ID = lec.code_of_prepod)
left outer join prepodavatel p2 on (p2.ID = sems.code_of_prepod)
left outer join prepodavatel p3 on (p3.ID = labs.code_of_prepod)
left outer join disc0 on (disc0.ID=rasdispotok.code_of_dis)
where rasdispotok.code_of_potok = 98 order by rasdispotok.code_of_dis

поэтому буду эти данные присваивать простым эдитам, чтобы была возможность редактирования, хотя это конечно как-то через одно место получается.
а первый вопрос заключается в том, что при работе с ADODataSet и хранимой процедурой на сервере при изменении хп на сервере почему-то нужно снова "перезагружать" имя хп, иначе ADODataSet "не видит" изменений. и еще - если, есть параметры у хп, то для того, чтобы раскидать по DBEditам приходится задавать какое-нибудь значение для этих параметров "от балды", иначе она не дает опрделить DBEdit...а везде пишется, что при такой работе ADODataSet+хп - "использование связки хп+ADODataSet позволит вам менять хп на сервере и не трогать клиентов" у меня вот так не получается почему-то..
вот, надеюсь, понятно объяснила, старалась...

спасибо, что дочитали :)


 
Инна   (2003-05-06 01:51) [3]

попытаюсь объяснить:
у меня на форме ADODataSet, который раскидывается на несколько DBEditов. и вот эти эдиты редактировать не дают в принципе. я подозреваю, что дело в запросе, т.к. я пробовала то же самое с простым запросом и все работало
запрос:
select distinct rasdispotok.code_of_dis, coalesce(disc0.name,"-") as Name_of_dis,
coalesce(disc0.full_name,"-") as FullName_of_dis,

coalesce(lec.ID,"-") as LID,
coalesce(lec.subs,"-") as subs,
coalesce(lec.unions,"-") as unions,
coalesce(lec.hours,"-") as l_h, coalesce(p1.name,"-") as Lector,


coalesce(sems.ID,"-") as SID,
coalesce(sems.subs,"-") as subs,
coalesce(sems.unions,"-") as unions,
coalesce(sems.hours,"-") as s_h, coalesce(p2.name,"-") as Seminarist,

coalesce(labs.ID,"-") as LAID,
coalesce(labs.subs,"-") as subs,
coalesce(labs.unions,"-") as unions,
coalesce(labs.hours,"-") as la_h, coalesce(p3.name,"-") as LabPrepod

from rasdispotok
left outer join lec on (lec.code_of_dis=rasdispotok.code_of_dis
and lec.code_of_group=198)
left outer join sems on (sems.code_of_dis=rasdispotok.code_of_dis
and sems.code_of_group=198)
left outer join labs on (labs.code_of_dis=rasdispotok.code_of_dis
and labs.code_of_group=198)
left outer join prepodavatel p1 on (p1.ID = lec.code_of_prepod)
left outer join prepodavatel p2 on (p2.ID = sems.code_of_prepod)
left outer join prepodavatel p3 on (p3.ID = labs.code_of_prepod)
left outer join disc0 on (disc0.ID=rasdispotok.code_of_dis)
where rasdispotok.code_of_potok = 98 order by rasdispotok.code_of_dis

поэтому буду эти данные присваивать простым эдитам, чтобы была возможность редактирования, хотя это конечно как-то через одно место получается.
а первый вопрос заключается в том, что при работе с ADODataSet и хранимой процедурой на сервере при изменении хп на сервере почему-то нужно снова "перезагружать" имя хп, иначе ADODataSet "не видит" изменений. и еще - если, есть параметры у хп, то для того, чтобы раскидать по DBEditам приходится задавать какое-нибудь значение для этих параметров "от балды", иначе она не дает опрделить DBEdit...а везде пишется, что при такой работе ADODataSet+хп - "использование связки хп+ADODataSet позволит вам менять хп на сервере и не трогать клиентов" у меня вот так не получается почему-то..
вот, надеюсь, понятно объяснила, старалась...

спасибо, что дочитали :)


 
Инна   (2003-05-06 01:53) [4]

блин, выдавалась ошибка, поэтому получилось два раза :(((


 
sniknik   (2003-05-06 08:13) [5]

> а везде пишется, что при такой работе ADODataSet+хп - "использование связки хп+ADODataSet позволит вам менять хп на сервере и не трогать клиентов"

пишется то пишется но читается не так как ты это поняла (вернее не так как я понял как ты это поняла).

имеется ввиду что если работа идет через хранимые процедуры то можно поменять логику работы/ошибку в выдаваемых данных просто изменив х.процедуру на сервере не трогая многочисленных клиентов. а связка ХП-ADODataSet надуманная. (без разницы АдоСторедПроцедура, ADODataSet, AdoQuery, или даже ADOCommand + any recordset)


 
Инна   (2003-05-06 11:16) [6]

"а связка ХП-ADODataSet надуманная. (без разницы АдоСторедПроцедура, ADODataSet, AdoQuery, или даже ADOCommand + any recordset)"
мне что-то так уже кажется дня три...
"можно поменять логику работы/ошибку в выдаваемых данных просто изменив х.процедуру на сервере"
можешь пример привести?
спасибо за ответ :) !


 
sniknik   (2003-05-06 11:56) [7]

> можешь пример привести?

да без проблем.
выдаеш ты значит результат из ХП
SELECT 1 AS MyProcValue
процедура описана на сервере естественно, и вызывается по имени, и вот решила ты что значение 1 неправильно а провильно значение 2 (ужас какой). и что делать? просто идеш на сервер и правиш, все. а 128 с половиной(начальник) клиента сразу же начнут получать правильное значение. заметь без патчей и переустановок на самих клиентах. А что бы было если бы этот селект был "вшит" в код программы на клиентской части? правильно, был бы "дикий ужас".

но на самом деле не все так красиво как описывают книги, на практике получается что нужно менят и серверную часть и клиентскую при любом изменении. (потому как кто помнит что еще менялось в программе/процедурах/методах вызова с последнего апдейта? а никто не помнит и нигде не записано, а если и записано то неправильно) и начинается "ужас безумный" (когда все бегают с выпученными глазами) :о)))


 
Инна   (2003-05-06 13:13) [8]

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



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

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

Наверх





Память: 0.48 MB
Время: 0.008 c
3-83340
diokant
2003-05-05 15:35
2003.05.26
Подскажите по MS SQL 2000, почему так нельзя...


1-83491
AstraS
2003-05-15 17:08
2003.05.26
QReport


14-83688
Mak
2003-05-05 14:04
2003.05.26
Crystal Report


1-83540
val20022002
2003-05-13 17:18
2003.05.26
TTimer


14-83683
Dmitriy_R
2003-05-06 07:08
2003.05.26
ServerSocket





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский