6,576

(14 replies, posted in Russian)

Rebrovvv wrote:

А возможно подключиться к базе PARADOX и отобразить из неё данные в таблице?

Увы нет.

fleshkyru wrote:

Есть вообще возможность в таблице TableGrid1. заполнить как в списке ComboBox1.dbSQLExecute(SQL запрос) ?

procedure Form1_bScript_OnClick (Sender: string; var Cancel: boolean);
begin
    Form1.GridEmployees.dbSQL:='SELECT id, lastname, firstname, salary FROM employees'; // the id field, want to be able to edit or delete the entry from the table component
    Form1.GridEmployees.dbGeneralTable := 'employees'; // Optional (in the case of complex SQL queries with sub queries, you need to choose the main table of the database, also it need to be able to edit or delete the entry from the table component)
    Form1.GridEmployees.dbListFieldsNames :='delete_col,name2,name3,name4'; // If you do not want to see the value of the id in the component table, enter a name for the column delete_col
    Form1.GridEmployees.dbSQLExecute;
end;

6,578

(3 replies, posted in General)

Hello,


I don't see your attached project.

Here you can download the example:
http://myvisualdatabase.com/forum/viewtopic.php?id=1423

6,579

(14 replies, posted in Russian)

SQLExecute('INSERT INTO tablename (firstname, lastname) VALUES ('+Form1.Edit1.sqlValue+','+ Form1.Edit2.sqlValue+')');

6,580

(14 replies, posted in Russian)

maxkyl

SQLExecute('INSERT INTO tablename (firstname, lastname) VALUES ("Ivan", "Ivanov")');

6,581

(20 replies, posted in Russian)

сортировку значений можно сделать непосредственно в SQL запросе с помощью слова ORDER BY fieldname, например

SELECT lastname, firstname FROM tablename ORDER BY lastname;

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

procedure Form1_TableGrid1_OnChange (Sender: string);
begin
    Form1.TableGrid1.Columns[1].Sorted := True; // сортировка второй колонки (нумерация колонок с нуля)
end;

6,582

(14 replies, posted in Russian)

с помощью SQL запроса вы можете присоединить другие sqlite базы данных

SQLExecute('ATTACH DATABASE ''testDB.db'' as ''TEST''');

но взаимодействовать с ней вы можете только посредством SQL запросов, например

SELECT TEST.person.firstname, TEST.person.lastname FROM TEST.person

в том числе и вставлять данные с помощью INSERT, но это все придется сделать скриптом.

6,583

(14 replies, posted in Russian)

maxkyl wrote:

Приветствую.

SQLExecute(('INSERT INTO ShopAvto(Ball,name) VALUES ("Баллы","Имя")'));

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

Не совсем ясно, что вы имеете ввиду, данный SQL запрос добавляет запись непосредственно в таблицу ShopAvto, здесь нет никакой связи с названиями колонок.

Igor
Скорей всего у вас просто сохранены данные в этих полях, поэтому они там и появляются, просто удалите их и сохраните запись.

Поправил проект:

Nervis
Скорей всего когда вы заполняете таблицу данными, и очередь доходит до внешнего ключа, туда присваивается значение (идентификатор), которого еще нет в таблице словаре.


Просто подготовьте сперва словарные таблицы.

6,587

(6 replies, posted in Russian)

тогда так

var
   sName: string;
begin
   sName := SQLExecute ('SELECT name FROM catalog'); 

6,588

(28 replies, posted in Russian)

Rebrovvv
такие данные сперва необходимо привести к стандартному CSV формату, например в любом текстовом редакторе переводы строк заменить на спец. символ, например на #CRLF, т.о. много строчный текст будет одной длинной строкой, затем при импорте с помощью скрипта заменять данный символ обратно на перевод строки (#13)


можете приложить ваш проект (zip файл без exe и dll) и файл для импорт, постараюсь помочь.

6,589

(11 replies, posted in Russian)

dobro.vasiliy

пример который показал fleshkyru добавляет данные непосредственно в ComboBox, в базе данных их не будет, т.е. с этими данными  будет проблематично работать, т.к. у вас будут идентификаторы этих данных, но самих данных не будет.


С помощью скрипта и SQL запроса можно заполнять необходимые таблицы, например чтобы не заставлять делать это пользователя.

Судя по запросам, вы не совсем верно делаете выборку, рекомендую в принципе отказаться от SQL запросов, т.к. все это можно реализовать с помощью кнопки с действием "Поиск"


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


Можете приложить ваш проект, помогу вам реализовать это без SQL запросов.

6,591

(6 replies, posted in Russian)

Пример, который перебирает данные и вставляет их в компонент Memo

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);  
var
    Results: TDataSet;
begin
    SQLQuery('SELECT name, sort FROM person', Results);
    while not Results.Eof do
    begin
        Form1.Memo1.Lines.Add( Results.FieldByName('name').AsString;
        Form1.Memo1.Lines.Add( Results.FieldByName('sort').AsString;
        Results.Next;
    end;
    Results.Free;
end;

6,592

(4 replies, posted in Russian)

Dreada
Зависит от количества записей, протестируйте, если будет работать медленно, можно будет оптимизировать с помощью скрипта.

fleshkyru wrote:

В скриптах сделать возможность правка->отменить и правка->вернуть для удобства работы со скриптами.

Воспользуйтесь горячими кнопка
Ctrl+Z - отменить
Ctrl+Y - вернуть

6,594

(4 replies, posted in Russian)

попробуйте такое вычисляемое поле:

(
   select printf("%.2f",sum(cost)) from s_history where (s_history.id_numbers = t_history.id_numbers) and (date(s_history.sd) >= date(t_history.sd)) and (date(s_history.ed) <= date(t_history.ed))
)

+

(
 select printf("%.2f",sum(cost)) from p_history where (p_history.id_t_history = t_history.id)
)

6,595

(4 replies, posted in Russian)

Milla.Makova wrote:

Если число записей в TableGrid1 равно *** тогда высота Panel1 будет равна этому числу.

procedure Form1_TableGrid1_OnChange (Sender: string);
begin
    Form1.Panel1.Height := Form1.TableGrid1.RowCount;
end;

SELECT
strftime('%m.%Y', operator.datetime),
operatorAdd.fieldname,   
adminAdd.fieldname,   
operator.incident,
operator.pinalty

FROM operator

LEFT OUTER JOIN operatorAdd ON operatorAdd.id=operator.id_operatorAdd
LEFT OUTER JOIN adminAdd ON adminAdd.id=operator.id_adminAdd

WHERE strftime('%m.%Y', {DateTimePicker9}) = strftime('%m.%Y', operator.datetime);

вместо fieldname необходимо подставить необходимое имя поля, т.к. я не знаю какие поля есть в таблицах operatorAdd и adminAdd


p.s.
Необязательно использовать SQL запрос для данного поиска,с этим вполне справится кнопка с действием "Поиск", чтобы поиск работал только по месяцу и году, достаточна у компонента DateTimePicker установить значение Kind=MonthYear

можно так в CombBox-ы

procedure frmCards_TableGrid1_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
   frmCards.cbPerson.dbItemID := SQLExecute ('SELECT IFNULL(id_person, -1) FROM card WHERE id='+frmCards.TableGrid1.sqlValue);

   if frmCards.cbPerson.dbItemID<>-1 then
   begin
      frmCards.cbDepartament.dbItemID := SQLExecute ('SELECT IFNULL(id_departament, -1) FROM person WHERE id='+frmCards.cbPerson.sqlValue);
      frmCards.cbOtdel.dbItemID := SQLExecute ('SELECT IFNULL(id_otdel, -1) FROM person WHERE id='+frmCards.cbPerson.sqlValue);
      frmCards.cbRoom.dbItemID := SQLExecute ('SELECT IFNULL(id_room, -1) FROM person WHERE id='+frmCards.cbPerson.sqlValue);
      frmCards.cbJob.dbItemID := SQLExecute ('SELECT IFNULL(id_job, -1) FROM person WHERE id='+frmCards.cbPerson.sqlValue);
   end;
end;

6,598

(4 replies, posted in Russian)

Приветствую,

в текущей версии диаграмму нельзя разметить на форме, только в отчете.

6,599

(1 replies, posted in Script)

Not sure, but try this SQL query:

SELECT 
100-TOTAL(money_earn) - (SELECT TOTAL(TableB.electicity) FROM TableB)
FROM TableA

6,600

(2 replies, posted in General)

Hello,


You can do it using script:


procedure Form1_OnShow (Sender: string; Action: string);
begin
    Form1.Edit1.Color := clBtnFace;
end;