-
MY PROJECTS
-
Recent Posts
- SQL.How can you compare two nullable values safely, and how does IS DISTINCT FROM differ from <>?
- SQL.How are NULL values ordered by ORDER BY, how do defaults differ between databases, and how can you control their placement?
- SQL.How does NULL propagate through arithmetic expressions, and how can COALESCE and NULLIF help handle missing values and division by zero?
- SQL.How does NULL affect join conditions, and why can filtering the right-hand table in WHERE remove unmatched rows from a LEFT JOIN?
- SQL.How do GROUP BY and DISTINCT treat NULL values, even though NULL = NULL evaluates to UNKNOWN?
- SQL.How do aggregate functions handle NULL, and what is the difference between COUNT(*), COUNT(column), and COUNT(DISTINCT column)?
- SQL.How does NULL affect IN and NOT IN, and why can NOT EXISTS be a safer choice when a subquery returns nullable values?
- SQL.How do WHERE, HAVING, and CHECK constraints treat conditions that evaluate to UNKNOWN?
- SQL.Why do column = NULL and column <> NULL not work as expected, and when should you use IS NULL and IS NOT NULL?
- SQL.What is SQL’s three-valued logic (TRUE, FALSE, UNKNOWN), and how do AND, OR, and NOT behave with UNKNOWN?
- ChromeDevTools.Watch all failed requests
- SQL.What are domain types (or constraints on data types), and how do they help enforce data correctness?
- SQL.How does SQL handle comparisons between different data types (for example, string vs number), and why is this dangerous?
- SQL.What is the difference between DATE, TIME, TIMESTAMP, and TIMESTAMPTZ, and which one should be used for business events?
- SQL.How do numeric types like INTEGER, BIGINT, DECIMAL, and FLOAT differ in terms of precision and use cases?
- SQL.What problems can arise from implicit type casting in SQL, and how can it affect indexes?
- SQL.How does NULL differ from 0, an empty string, or FALSE in SQL?
- SQL.What is the difference between CHAR, VARCHAR, and TEXT, and when would you choose each?
- SQL.What is MVCC ?
- SQL.What is AutoVacuum Postgres ?
Categories
- Aptana
- Azure
- C#
- DataSnap
- DBExpress
- Delphi
- Delphi и сети
- Delphi. Язык программирования
- ExtJS
- FastReport
- FireDAC
- FireMonkey
- GIT
- ICS
- IDE
- IIS
- Indy
- InnoSetup
- javascript
- jQuery
- JSON
- LiveBindings
- MSHTML
- MySQL
- PHP
- REST
- Ribbons
- SMS
- SQL инструкции
- SVN
- TRichView
- UniGui
- WebBroker
- WinAPI
- Windows
- Алгоритмы
- Без рубрики
- Деревья
- Ищу ответ
- Компонентостроение
- Мои компоненты
- Начальный уровень
- Обработка исключений
- Парсинг
- Потоки(Threads)
- Регулярные выражения
- Тестирование приложений
Category Archives: Delphi
Программное добавление поля
Программное добавление поля, на примере ADO, по аналогии можно сделать и с FireDAC
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var f: TIntegerField; begin ADOQuery.Open; f := TIntegerField.Create(ADOQuery); //Создаем поле тепа INTEGER f.FieldKind := fkLookup; //Указываем на то что оно у нас LookUp f.KeyFields := 'key_name'; //Поле ключ, по которому будет искаться соответствие f.LookupDataSet := ADOQueryDictionary; //Набор данных (DataSet) в котором буду отбираться данные f.LookupKeyFields := 'id'; //Уникальный ключ в наборе данных ADOQueryDictionary, по которому будем искать f.LookupResultField := 'name'; //Поле из набора данных ADOQueryDictionary, которое будет отображаться в результате f.Name := 'field_name'; //задаем имя нашему полю ADOQuery.Fields.Add(f); //включаем его в сотав нашего набора данных end; |
Posted in Delphi
Comments Off on Программное добавление поля
Delphi. FireDAC. FDTable. Осортировать записи на клиенте
Пример сортировки
|
1 2 3 4 5 6 7 8 |
procedure TVisualFrame.Sort; begin FDTable.IndexFieldNames:='ChangesDateTime:D'; FDTable.Close; FDTable.Open; end; |
Буква D означает по убыванию, Descending как я понимаю
Posted in Delphi
Comments Off on Delphi. FireDAC. FDTable. Осортировать записи на клиенте
Delphi. Как закрыть модальное окно программно?
Вопрос вроде бы простой, но стопорнулся на нём. В сети много примеров на эту тему, но перепробовав всё, я понял, что мне нужен свой вариант))) Проблема заключается в том, что вызвав модальную форму, программа ждёт некоторого действия от пользователя, например … Continue reading
Posted in Delphi
Comments Off on Delphi. Как закрыть модальное окно программно?
Delphi. Как настроить TListView для работы с большим количеством данных?
|
1 2 3 4 |
... private FSL:TStringList; ... |
Например 1000 000 строк…
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
procedure TForm1.FormCreate(Sender: TObject); var lc:TListColumn; i: Integer; begin FSL:=TStringList.Create; for i := 0 to 1000000 do FSL.Add('somevalue '+i.ToString()); //Вначале настроем массив //Вся настройка листвью тут //Виртуальный режим Listview1.OwnerData:=True; //Сделаем в виде колонок и добавим 2 колонки ListView1.ViewStyle:=vsReport; lc:=ListView1.Columns.Add; lc.Caption:='caption'; lc.Width:=150; lc:=ListView1.Columns.Add; lc.Caption:='test'; lc.Width:=150; //Ну и ещё пару моментов ListView1.RowSelect:=true; //Листвю должен знать, скоко у нас элементов. //Это число потом можно будет менять в процесе работы. ListView1.Items.Count:=FSL.Count-1; //Length(arr); //Листвью сам запросит нужные элементы, когда надо будет их отрисовать //Элементы запрашиваются в OnData Caption:=IntToStr(FSL.Count-1); //ListView1.UpdateItems(1,1); end; |
OnData
|
1 2 3 4 5 6 7 8 9 |
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem); begin //Этот обработчик должен выдавать элемент по номеру. //Точнее, есть Item, в которому нужно заполнить caption и subitems //Номер элемента храниться в Item.index item.Caption:=FSL[Item.Index]; // arr[item.Index].caption; item.SubItems.Add((FSL[item.Index])); end; |
После этого – информация подгружается по мере скролла – происходит это достаточно быстро.
Posted in Delphi
Comments Off on Delphi. Как настроить TListView для работы с большим количеством данных?
Delphi. Добавить DateTIme в MySQL в правильном формате.
Записать в нужном формате в MySQL
|
1 2 3 4 5 6 7 8 9 |
procedure TEventsListView.Test; var dateTimeForMySQL: string; begin ... dateTimeForMySQL := FormatDateTime('yyyy-mm-dd hh:mm:ss', Now); qUpdateDateTime.Params.ParamValues['DateTime'] := dateTimeForMySQL; ... end; |
Прочитать, соответственно, наоборот
|
1 |
dt := q.FieldByName('dt').AsDateTime; |
Posted in Delphi
Comments Off on Delphi. Добавить DateTIme в MySQL в правильном формате.
Delphi. Как прочитать значение поля из DataSource?
Подсказка для себя
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
procedure TEventsListView.DBGridCellClick(Column: TColumn); begin //ShowMessage(DBGrid.SelectedIndex.ToString); //DBGrid.DataSource.DataSet.RecNo; // <<Это номер записи, на которой стоит курсор ShowMessage( DBGrid.DataSource.DataSet.FindField('id').AsInteger.ToString ); ShowMessage( DBGrid.DataSource.DataSet.FindField('Name').AsString ) end; |
Posted in Delphi
Comments Off on Delphi. Как прочитать значение поля из DataSource?
Delphi. MySQL. Пример добавления даты и времени в базу данных
Как вариант можно хранить TDateTime в качестве строки. Допустим у нас в базе есть поле CreationDateTime varchar(45);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
procedure TEventsListView.UpdateDate; var NowStr:string; begin //Создание //Настройка qUpdateDate.Connection:=FDBConnection.FDConnection; //Основная работа NowStr:=DateTimeToStr(Now); NowStr:=''''+NowStr+''''; // <<< Сработало только с 4 кавычками!!! ShowMessage(NowStr); qUpdateDate.SQL.Text:='UPDATE `somedatabase_db`.`sometable` SET `CreationDateTime`='+NowStr+' WHERE `id`=1;'; //UPDATE `somedatabase_db`.`sometable` SET `CreationDateTime`='123' WHERE `id`='1'; ShowMessage(qUpdateDate.SQL.Text); qUpdateDate.ExecSQL; // end; |
Обратно можно преобразовать с помощью StrTODateTime;
Как ограничить движение мыши областью при DragOver при помощи ClipCursor?
Появилась задача – ограничить движение мыши прямоугольной областью, чтобы корректно работал механизм DragOver. Дело в том, что если разместить TreeView и ListView и прописать в каждом из них взаимоисключающие Accept параметры, то при переносе на соседний элемент иногда возникают проблемы. … Continue reading
Posted in Delphi
Comments Off on Как ограничить движение мыши областью при DragOver при помощи ClipCursor?
Как сохранить ID в TListItem.Data?
Пишу небольшую систему управления файлами на основе DBTreeView и DBListView – делаю небольшую подсказку для себя и тех, кто идет по моим следам. В данном посте узнаем как добавить колонки, итемы и сохранить ID записи базы данных в TListItem.Data? Тут … Continue reading
Posted in Delphi
Comments Off on Как сохранить ID в TListItem.Data?
Как избавиться от зависимости от глобальных переменных при разработке компонента?
Столкнулся с тем, что при разработке компонентов есть published свойства, в которые заносится некоторая информация. И вот вопрос – как передать эту информацию во внутренний модуль компонента? Подробно проблему описал на 2 форумах –How to avoid using GlobalVars in components … Continue reading
Posted in Delphi
Comments Off on Как избавиться от зависимости от глобальных переменных при разработке компонента?