Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 29.10.2012, 12:37
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от BRESKON
А как исправить?
Пиши объявления в тех местах где компилятор ожидает объявления.
Другими словами если на Delphi писать программу по правилам Delphi, то такая ошибка не возникнет.
Ответить с цитированием
  #17  
Старый 29.10.2012, 14:06
Аватар для BRESKON
BRESKON BRESKON вне форума
Прохожий
 
Регистрация: 12.10.2012
Адрес: г.Саратов
Сообщения: 13
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Пиши объявления в тех местах где компилятор ожидает объявления.
Другими словами если на Delphi писать программу по правилам Delphi, то такая ошибка не возникнет.
хорошо, щас разберусь, спасибо.
Ответить с цитированием
  #18  
Старый 29.10.2012, 19:37
Аватар для BRESKON
BRESKON BRESKON вне форума
Прохожий
 
Регистрация: 12.10.2012
Адрес: г.Саратов
Сообщения: 13
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Пиши объявления в тех местах где компилятор ожидает объявления.
Другими словами если на Delphi писать программу по правилам Delphi, то такая ошибка не возникнет.
А вот так корректно будет?:
Код:
procedure TForm1.DataSetAfterScroll(DataSet: TDataSet);
begin
  case DataSet.FieldByName('ПлатДок').AsInteger of
    1: Edit1.Text := 'СЧЁТ';
    2: Edit1.Text := 'СЧЁТ ФАКТУРА';
    3: Edit1.Text := 'АКТ ВЫПОЛНЕННЫХ РАБОТ';
  else
    Edit1.Text := '???';
  end;
  begin
  if DataSet.Locate('Фир_ID', DataSet.FieldByName('НазФирм').AsInteger, []) then
begin
  Edit2.Text := DataSet.FieldByName('СуммаДок').AsString;
end else
begin
  Edit2.Text := '???';
end;
end;
end;
Для получения большего опыта, я создал ещё один Едит, и подключил другие поля.Всё компилируется, но работает коряво, наверное из-за того что я не разобрался с полями.
Я уточнить: Получается что ID - что менять, Текст - на что менять? (Убедиться правильно ли я тебя понял). Мне нужно чтоб из поля(Столбца) Фир_ID, бралось данное из тойже строки что данное для Едит1 и менялось на Поле(Столбец) СуммаДок, согласно ID. Т.Е. если в поле Фир_ID данное равно 4 (или 1, или 12 неважно) в Едите2 показывается запись из поля(столбца)СуммаДок, а цыфра ровнялась строке этого поля.
Ответить с цитированием
  #19  
Старый 30.10.2012, 07:03
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от BRESKON
А вот так корректно будет?:
Код:
.....
  if DataSet.Locate('Фир_ID', DataSet.FieldByName('НазФирм').AsInteger, []) then
.....
Для получения большего опыта, я создал ещё один Едит, и подключил другие поля.Всё компилируется, но работает коряво, наверное из-за того что я не разобрался с полями.
Работает коряво потому что у тебя всё намешано. Сравни как у тебя написано и вот как эта же строка была написана у меня:
Код:
if Table1.Locate('id', DataSet.FieldByName('ПлатДок').AsInteger, []) then
У тебя должно быть 2 таблицы: DataSet - это основная, а Table1 - справочная, для подмены кода на строку в основной таблице.
Цитата:
Сообщение от BRESKON
Я уточнить: Получается что ID - что менять, Текст - на что менять? (Убедиться правильно ли я тебя понял). Мне нужно чтоб из поля(Столбца) Фир_ID, бралось данное из тойже строки что данное для Едит1 и менялось на Поле(Столбец) СуммаДок, согласно ID. Т.Е. если в поле Фир_ID данное равно 4 (или 1, или 12 неважно) в Едите2 показывается запись из поля(столбца)СуммаДок, а цыфра ровнялась строке этого поля.
Пробуй так:
Код:
if Table1.Locate('ID', DataSet.FieldByName('Фир_ID').AsInteger, []) then
begin
  Edit2.Text := Table1.FieldByName('СуммаДок').AsString;
end else
begin
  Edit2.Text := '???';
end;
Ответить с цитированием
  #20  
Старый 30.10.2012, 18:42
Аватар для BRESKON
BRESKON BRESKON вне форума
Прохожий
 
Регистрация: 12.10.2012
Адрес: г.Саратов
Сообщения: 13
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Сначало данные для уточнения: У мну две таблицы "Платежи" и "Фирмы" Платежи соеденены через ADOTable1, а Фирмы через ADOTable2. В Платежах один столбец (гипотетически) Фир_ID, в Фирмах тоже один столбец Firm. Другими словами берётся данная из поля Фир_ID, меняется на данную из Firm (цыфра в Фир_ID равняется строке в поле Firm) и отображается в Edite2.
Цитата:
Сообщение от poli-smen
Пробуй так:
Код:
if Table1.Locate('ID', DataSet.FieldByName('Фир_ID').AsInteger, []) then
begin
  Edit2.Text := Table1.FieldByName('СуммаДок').AsString;
end else
begin
  Edit2.Text := '???';
end;
У меня получилось так:
Код:
if ADOTable2.Locate('Firm', DataSet.FieldByName('Фир_ID').AsString, []) then
begin
  Edit2.Text := ADOTable2.FieldByName('Firm').AsString;
end else
begin
  Edit2.Text := '???';
end;
end;
в Эдите2 отображаются ??? Может это из-за Русского текста в поле Firm?

А если записать так:
Код:
if DataSet.Locate('Фир_ID', ADOTable2.FieldByName('Firm').AsString, []) then
begin
  Edit2.Text := DataSet.FieldByName('Фир_ID').AsString;
end else
begin
  Edit2.Text := '???';
end;
Помимо ??? в Эдите2 выскакивает: Аргументы имеют неверный тип, выходит за пределы допустимого диапазона или вступают в конфликт друг другом.

Последний раз редактировалось BRESKON, 30.10.2012 в 18:50.
Ответить с цитированием
  #21  
Старый 30.10.2012, 18:53
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от BRESKON
Сначало данные для уточнения: У мну две таблицы "Платежи" и "Фирмы" Платежи соеденены через ADOTable1, а Фирмы через ADOTable2. В Платежах один столбец (гипотетически) Фир_ID, в Фирмах тоже один столбец Firm. Другими словами берётся данная из поля Фир_ID, меняется на данную из Firm (цыфра в Фир_ID равняется строке в поле Firm) и отображается в Edite2.
В таблице "Фирмы" (ADOTable2) должно быть минимум 2 поля (столбца):
  1. "ID" - уникальный номер через который потом можно делать привязку в таблице "Платежи" и оно же указывается в поле "Фир_ID" у таблицы "Платежи"
  2. "Firm" - строковое поле с названием фирмы
Тогда в обработчике событий ADOTable1AfterScroll получим такое:
Код:
if ADOTable2.Locate('ID', DataSet.FieldByName('Фир_ID').AsInteger, []) then
begin
  Edit2.Text := ADOTable2.FieldByName('Firm').AsString;
end else
begin
  Edit2.Text := '???';
end;
Ответить с цитированием
  #22  
Старый 30.10.2012, 18:59
Аватар для BRESKON
BRESKON BRESKON вне форума
Прохожий
 
Регистрация: 12.10.2012
Адрес: г.Саратов
Сообщения: 13
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
В таблице "Фирмы" (ADOTable2) должно быть минимум 2 поля (столбца):
  1. "ID" - уникальный номер через который потом можно делать привязку в таблице "Платежи" и оно же указывается в поле "Фир_ID" у таблицы "Платежи"
  2. "Firm" - строковое поле с названием фирмы
Тогда в обработчике событий ADOTable1AfterScroll получим такое:
Код:
if ADOTable2.Locate('ID', DataSet.FieldByName('Фир_ID').AsInteger, []) then
begin
  Edit2.Text := ADOTable2.FieldByName('Firm').AsString;
end else
begin
  Edit2.Text := '???';
end;
Ну-да всё заработало! Можно тему считать закрытой. Спасибо тебе за терпение и понимание.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter