:: Не фоксом единым
Проект под Делфи
sphinx
Автор

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Коллеги, начал бодать Делфю. В целом - идет, пусть даже нет толком инета, на общих знаниях и справке. А дома, да, нужные вопросы Гуглю. Нужен куратор проекта. Кто все скажет, не плювается. Нужна здоровая критика. А подучиться разработке под Делфи - еще запишусь, это в планах.

Кто-то поможет? Проект простой. Нужны общие рекомендации, ибо что-то утянул с Фокса, а что не получилось - придумывал по ходу развития проекта. Сроков сдачи пока нет, но уже задали вопросы. Я сначала на Фоксе простое наваял на коленке, без своих классов, на всякий случай (есть идея написать прогу а-ля scx2dmf).

Здесь проект не размещу, не секретно, но не буду. Одному в ЛС отправлю, и скрипты баз, чтоб взлетело. У нас Оракл, но могу адаптировать под ПГ.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Проект под Делфи
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Здесь задавай вопросы. Курировать скорее всего никто не будет. А в эмбаркадере, минимум двое в клубе есть.
Ratings: 0 negative/0 positive
Re: Проект под Делфи
Penner

Сообщений: 4102
Откуда: Muenster
Дата регистрации: 26.04.2002
Я перешёл на Дельфи и RusMikle


------------------
Никогда не откладывайте на завтра, то, о чем можно забыть навсегда
Ratings: 0 negative/0 positive
Re: Проект под Делфи
Божья_коровка

Сообщений: 25720
Дата регистрации: 23.08.2001
Верно Паша говорит, задавай конкретные вопросы, если что по мелочи может и я могу помочь, Ембаркадеро Рад Студию еще не грохнула


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/0 positive
Re: Проект под Делфи
sphinx
Автор

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Хочу заменить повторяющийся код

FDQuery.Active := False;
FDQuery.SQL.Clear;
FDQuery.SQL.Add('select id, name from mytable');
FDQuery.Active := True;

На вызов метода
Procedure SqlExec(oObject: TObject, tcString: String);
begin
oObject.Active := False;
oObect.SQL.Clear;
oObject.SQL.Add(tcString) ;
oObject.Active := True;
end;

Ругается "E2003 Undeclared identifier 'Active'". Как правильно передать об'ект?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Проект под Делфи
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Явно у тебя FDQuery не класса TObject. А скорее всего FDQuery объявлен как TFDQuery.

Поэтому либо процедуру объявляй Procedure SqlExec(oObject: TFDQuery, tcString: String);

Либо приводи объект к нужному типу:
TFDQuery(oObject).Active := False;

Наверное, первый вариант предпочтительнее.
Ratings: 0 negative/0 positive
Re: Проект под Делфи
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
А если совсем по ООПэшному, то лучше создать класс, унаследованный от TFDQuery, и у этого класса объявить новый public метод SqlExec.

На коленке накидал:
interface
type
tMyFDQuery = class (TFDQuery)
public Procedure SqlExec(tcString: String);
end;
implementation
Procedure tMyFDQuery.SqlExec(tcString: String);
begin
Active := False;
SQL.Clear;
SQL.Add(tcString) ;
Active := True;
end;
end.



Исправлено 1 раз(а). Последнее : pasha_usue, 01.11.21 14:40
Ratings: 0 negative/0 positive
Re: Проект под Делфи
sphinx
Автор

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
2) Как организовать динамическое заполнение FDQuery с параметром? Пока размещаю FDQuery на форму, а в коде прописываю FDQuery.ParamByName('p_id').AsInteger := StrToInt(txtId.Text) ? А если я хочу другой параметр - мне нужно другой об'ект использовать с прописанным другим параметром?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Проект под Делфи
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
sphinx
2) Как организовать динамическое заполнение FDQuery с параметром? Пока размещаю FDQuery на форму, а в коде прописываю FDQuery.ParamByName('p_id').AsInteger := StrToInt(txtId.Text) ? А если я хочу другой параметр - мне нужно другой об'ект использовать с прописанным другим параметром?
Это вот прямо вопрос про стратегию. Когда визуально кодишь, то да, удобнее по TFDQuery на каждый нужный датасет. И привязывать их потом удобнее к визуальным компонентам. И думать не надо.

А если программно юзать, то я вообще обычно по месту создаю объект в коде, а потом уничтожаю, как становится не нужен.
Ratings: 0 negative/0 positive
Re: Проект под Делфи
sphinx
Автор

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Понятно. Спасибо, Паш!


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Проект под Делфи
sphinx
Автор

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
3) Как правильнее организовать вставку/апдейт данных с последующим обновлением грида (cxGrid)?

а) Прямыми INSERT/UPDATE с последующим обновлением датасета (TOracleDataSet). (как-то несерьезно, да и обновлять вручную не хочется).

б) Создать программно пакет на Оракле. (Кода немеряно)

в) Использовать AppendRecord/InsertRecord самого датасета. (Не могу найти годных примеров.)

?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Проект под Делфи
sphinx
Автор

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Листинг 20.5. Добавление новых записей в таблицу счетов и в таблицу клиентов
procedure TMainFrm.NewBillBtnClick(Sender: TObject);
begin
with BillFrm, Data.BillTbl do begin
Caption:='Счет для '+Data.CustTbl.FieldByName('CUST_NAME').AsString;
ShowModal;
if ModalResult<>mrOk then exit;
Append;
FieldByName('BILL_CUST').AsInteger:= Data.CustTbl.FieldByName('CUST_ID').AsInteger;
FieldByName('BILL_SUMM').AsString:=SummEd.Text;
FieldByName('BILL_DATE').AsDateTime:=DatePick.Date;
Post;
end;
end;
procedure TMainFrm.NewCustBtnClick(Sender: TObject);
begin
with CustFrm do begin
ShowModal;
if ModalResult<>mrOk then exit;
Data.CustTbl.AppendRecord([nil,NameEd.Text,AddrEd.Text]);
Data.CustTbl.Post;
end;
end;


------------------
"Veni, vidi, vici!"(с)




Исправлено 1 раз(а). Последнее : sphinx, 11.11.21 05:52
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 9 (Гостей: 9)

© 2000-2024 Fox Club 
Яндекс.Метрика