Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

1)С отображением все отлично, работает как часы) Однако я все равно загружаю картинку прямо в базу и возможность импорта невозможна (по причине отсутствия поддержки в CSV). Но при условии если фото крупноразмерные - будет значительные замедления. Существует ли способ обойти это исключительно скриптом?

2)Небольшая проблема. Попробовал открыть базу с другого компьютера в сети. Появилось всплывающее сообщения, типо ошибки, где было сказано о попытке открытия файла в режиме чтения. Это на мой взгляд нормально, во многих программах такое есть. Однако при попытке выйти из базы, сообщение постоянно повторялось и не позволило успешно завершить работу с БД. Пришлось по-простому вызывать диспетчера и завершать задачу. Подскажите в чем недостаток? Спасибо.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis

1. Не совсем понял, что именно необходимо обойти скриптом?
Вы либо храните файлы в базе, либо храните их в отдельной папке и в базе будет только ссылка на файл.


2. Спасибо, протестирую.

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

В примере, который вы прислали нужно было загружать файл в базу. Хотелось бы посмотреть именно на подгрузку изображения ссылкой(вариант №2) извините, если чего-то не понял сразу)

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis
На сколько я помню, данный скрипт в проекте будет работать и для вашего случая.

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Извините, Дмитрий) Совсем уж разленился. Реализовал все таким способом:

procedure Form4_DBImage1_OnClick (Sender: string; var Cancel: boolean);
var
   sFolder: string;
begin
if Form4.TableGrid1_elements_slovar.dbItemID = 1 then
OpenFile('путь\имя файла.расширение')
else Cancel := True;
end;

procedure Form4_TableGrid1_elements_slovar_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
    if Form4.TableGrid1_elements_slovar.dbItemID = 1 then Form4.DBImage1.Picture.LoadFromFile('Z:\путь\имя файла.расширение')
    else Form4.DBImage1.Clear;
end;

Конечно этот скрипт будет разрастаться ведь для каждого id нужно прописывать ссылку, но эта работа не за один раз. Результатом пока доволен) Спасибо.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

procedure Form4_DBImage1_OnMouseEnter (Sender: string);
begin
Form4.DBImage1.dbShowButtons := False;
end;

Скрипт не выполняется, указывает на необъявленный идентификатор dbShowbuttons. Подскажите как подкорректировать?

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis
Скорей всего у вас старая версия,  в которой нет свойства dbShowButtons, просто удалите эту строчку.
Данное свойство позволяет скрыть всплывающие кнопки у данного компонента.

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

DriveSoft wrote:

Nervis
Скорей всего у вас старая версия,  в которой нет свойства dbShowButtons, просто удалите эту строчку.
Данное свойство позволяет скрыть всплывающие кнопки у данного компонента.

Т.е. в версии 1.46 скрыть не удастся?картинка небольшая, а кнопки управления занимают треть) впрочем эт одело привычки.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis
Увы.

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Добрый день, Дмитрий. Подскажите пожалуйста как правильно реализовать.
1)Есть форма редактора. На ней расположен комбобокс. При добавлении информации в таблицу приходится многократно добавлять записи(открывать форму редактора) и выбирать одно и тоже значение у комбобокса. Я хотел бы реализовать возможность однократно запоминать выбранное первоначально значение(для ускорения процесса заполнения) Вот мой пример (пока что не рабочий).

var
   sUser,s: string = ''; d: integer;

procedure Form6_1_CheckBox1_OnMouseUp (Sender: string; Cancel, MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
   begin
      if Form6_1.CheckBox1.Checked = True then d:=Form6.cmb_izdelie.dbItemID
      else Cancel:=True;
   end;

procedure Form6_1_OnShow (Sender: string; Action: string);
   begin
    Form6.cmb_izdelie.dbItemID:=d;
   end;

Программа не ругается, но видимо не хватает какой-то логической операции.
2)При добавлении информации в таблицу рано или поздно свободное пространство заполняется, справа появляется скролл-бар. После сохранения записи как правило автоматически перескакиевает на начальную запись. Возможен ли эффект автоматической прокрутки в конец?

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis
1.
а зачем здесь CheckBox ?


2.
Можно так

var
   sLastAction: string;

procedure frmAbonent_Button6_OnClick (Sender: string; var Cancel: boolean); // кнопка с действием "Сохранить запись"
begin
     sLastAction := frmAbonent.dbAction; // запоминаем с какой целью была открыта форма
end;

procedure Form1_TableGrid1_OnChange (Sender: string);
begin
    if sLastAction='NewRecord' then // если форма была открыта для создания новой записи, прокручиваем грид вконец.
    begin
        Form1.TableGrid1.ScrollToRow(Form1.TableGrid1.RowCount-1);
        Form1.TableGrid1.SelectedRow := Form1.TableGrid1.RowCount-1;
        sLastAction := '';
    end;
end;
Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Добрый день, Дмитрий.
1) Чекбоксы я хотел применить в качастве триггеров. Если галочка есть - комбобокс запоминает свое значение до тех пор пока база запущена. Если галочка снимается - значение каждый раз сбрасывается по умолчанию. В принципе можно и без них, постоянное запоминание информации. Возможно это даже проще реализовать.
2) Скрипт на автоскролл прикрутить не удалось. Программа ни на что не ругается, однако упорно не прокручивает к концу таблицы.
3) Потребовалось подсчитать сумму значений в поле таблицы. Из информации на форуме понял, что скорее всего такая функция появилась после версии 1.46. Попробовал написать скрипт вручную.

var   a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,sSum: integer;
a:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,0]);
b:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,1]);
c:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,3]);
d:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,4]);
e:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,5]);
f:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,6]);
g:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,7]);
h:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,8]);
i:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,9]);
j:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,10]);
k:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,11]);
l:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,12]);
m:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,13]);
n:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,14]);
o:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,15]);
p:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,16]);
q:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,17]);
r:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,18]);
s:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,19]);
t:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,20]);
u:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,21]);
v:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,22]);
w:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,23]);
x:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,24]);
y:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,25]);
z:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,26]);
sSum:=a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z;
Form8.Label31.Caption:=('Сумма:' + IntToStr(sSum));
end;

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

var   a,b,c,z,sSum: integer;
begin
b:=Form8.TableGrid3_elements_to_plats.RowCount - 1;
for a:=0 to b do
z:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,b]);
c:=StrToInt(Form8.TableGrid3_elements_to_plats.Cells[5,a]);
sSum:=SUM(z,c);
Form8.Label31.Caption:=('Сумма:' + IntToStr(sSum));
end;

Подскажите, что не так. Явно накрутил с переменными. Не уверен по поводу верности финального суммирования.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis
1. Если без чекбоксов, то можно так

var
   idCombo1: integer = 0; // глобальная переменная


procedure Form1_bNewRecord_OnClick (Sender: string; var Cancel: boolean);
begin
    frmAbonent.cbGroups.dbDefaultID := idCombo1; // при создании новой записи, присваиваем ранее сохраненный индекс для данного ComboBox
end;

procedure frmAbonent_bSave_OnClick (Sender: string; var Cancel: boolean);
begin
    idCombo1 := frmAbonent.cbGroups.ItemIndex; // запоминаем индекс выбранного значения в ComboBox во время сохранения записи
end;

2. К сожалению не могу знать почему не работает в вашем случае, необходимо смотреть ваш проект.

3. На сколько я помню, в версии 1.46 уже была такая возможность.

Dmitry.

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Здравствуйте, Дмитрий.
1) Прикрепил - работает отлично). Жаль, что не может восстановить значение комбобокса связанного с родительским. Но если убрать связь - работает как часы)).
2) Немного подкорректирую проект и пришлю вам.
3)

DriveSoft 3. На сколько я помню, в версии 1.46 уже была такая возможность.

Не подскажите как именно выглядит это выражение. В справке не нашел.
4) Вопрос по FastReport. В отчет добавляю 2 одинаковых поля значений. Значения 2-го поля необходимо домножить на число. Данное число(множитель) создаю в самом отчете. Т.е. связь между полем и числом. При генерировании отчета, вручную меняю это число(множитель) и все значения 2-го поля меняются автоматически.
Создавал в отчете компонент Memo, выбирал формат числовой, при умножении дает неверные результаты или вовсе выдает ошибочный отчет. Не понимаю в чем именно проблема. Спасибо.

Evgeniy

Re: Нужен совет. Вычислительное поле, запрос информации из таблицы.

Nervis
3.
http://myvisualdatabase.com/help_ru/com … ooter.html


4. К сожалению не совсем понял ваш вопрос, возможно будет понятней если пришлете проект с пошаговым описаний действий.

Dmitry.