А возможно подключиться к базе PARADOX и отобразить из неё данные в таблице?
Увы нет.
My Visual Database → Posts by DriveSoft
А возможно подключиться к базе PARADOX и отобразить из неё данные в таблице?
Увы нет.
Есть вообще возможность в таблице 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;
Hello,
I don't see your attached project.
Here you can download the example:
http://myvisualdatabase.com/forum/viewtopic.php?id=1423
SQLExecute('INSERT INTO tablename (firstname, lastname) VALUES ('+Form1.Edit1.sqlValue+','+ Form1.Edit2.sqlValue+')');
maxkyl
SQLExecute('INSERT INTO tablename (firstname, lastname) VALUES ("Ivan", "Ivanov")');
сортировку значений можно сделать непосредственно в 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;
с помощью SQL запроса вы можете присоединить другие sqlite базы данных
SQLExecute('ATTACH DATABASE ''testDB.db'' as ''TEST''');
но взаимодействовать с ней вы можете только посредством SQL запросов, например
SELECT TEST.person.firstname, TEST.person.lastname FROM TEST.person
в том числе и вставлять данные с помощью INSERT, но это все придется сделать скриптом.
Приветствую.
SQLExecute(('INSERT INTO ShopAvto(Ball,name) VALUES ("Баллы","Имя")'));
Почему при использовании данной процедуры в базу сохраняются только названия колонок Grid?
Не совсем ясно, что вы имеете ввиду, данный SQL запрос добавляет запись непосредственно в таблицу ShopAvto, здесь нет никакой связи с названиями колонок.
Igor
Скорей всего у вас просто сохранены данные в этих полях, поэтому они там и появляются, просто удалите их и сохраните запись.
Поправил проект:
Nervis
Скорей всего когда вы заполняете таблицу данными, и очередь доходит до внешнего ключа, туда присваивается значение (идентификатор), которого еще нет в таблице словаре.
Просто подготовьте сперва словарные таблицы.
тогда так
var
sName: string;
begin
sName := SQLExecute ('SELECT name FROM catalog');
Rebrovvv
такие данные сперва необходимо привести к стандартному CSV формату, например в любом текстовом редакторе переводы строк заменить на спец. символ, например на #CRLF, т.о. много строчный текст будет одной длинной строкой, затем при импорте с помощью скрипта заменять данный символ обратно на перевод строки (#13)
можете приложить ваш проект (zip файл без exe и dll) и файл для импорт, постараюсь помочь.
dobro.vasiliy
пример который показал fleshkyru добавляет данные непосредственно в ComboBox, в базе данных их не будет, т.е. с этими данными будет проблематично работать, т.к. у вас будут идентификаторы этих данных, но самих данных не будет.
С помощью скрипта и SQL запроса можно заполнять необходимые таблицы, например чтобы не заставлять делать это пользователя.
Судя по запросам, вы не совсем верно делаете выборку, рекомендую в принципе отказаться от SQL запросов, т.к. все это можно реализовать с помощью кнопки с действием "Поиск"
почти у любого компонента есть свойство Increm.Search, в котором вы можете указать кнопку с действием Поиск, которая нажмется автоматически при изменении данных в компоненте.
Можете приложить ваш проект, помогу вам реализовать это без SQL запросов.
Пример, который перебирает данные и вставляет их в компонент 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;
Dreada
Зависит от количества записей, протестируйте, если будет работать медленно, можно будет оптимизировать с помощью скрипта.
В скриптах сделать возможность правка->отменить и правка->вернуть для удобства работы со скриптами.
Воспользуйтесь горячими кнопка
Ctrl+Z - отменить
Ctrl+Y - вернуть
попробуйте такое вычисляемое поле:
(
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)
)
Если число записей в 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;
Приветствую,
в текущей версии диаграмму нельзя разметить на форме, только в отчете.
Not sure, but try this SQL query:
SELECT
100-TOTAL(money_earn) - (SELECT TOTAL(TableB.electicity) FROM TableB)
FROM TableA
Hello,
You can do it using script:
procedure Form1_OnShow (Sender: string; Action: string);
begin
Form1.Edit1.Color := clBtnFace;
end;
My Visual Database → Posts by DriveSoft
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi