Архив рубрики: Программирование

Рубрика для примеров программирования

cxTreeList — свой стиль для определенных строк

cxTreeListСреда DELPHI.
В компоненте cxTreeList  понадобилось для определенных значений (больше 0 ) использовать свой стиль .

Для этого можно использовать событие cxTreeList1StylesGetContentStyle.

 

Сначала создаем свои стили.  Например в этом случае нам нужно 2 стиля.  Стиль обычный и  стиль с жирный шрифтом.

Затем пишем следующий код в cxTreeList1StylesGetContentStyle.

 procedure TMForm.cxTreeList1StylesGetContentStyle(
  Sender: TcxCustomTreeList; AColumn: TcxTreeListColumn; ANode: TcxTreeListNode;
  var AStyle: TcxStyle);
begin
       //в этом примере значение для сравнения во второй колонке
        if VarIsNull(ANode.Values[cxTreeList1Column2.ItemIndex])  then Exit; 
       
        if ANode.Values[cxTreeList1Column2.ItemIndex] > 0  then
          begin
            AStyle := cxstyl1; // стиль для >0 
           end
       else
          AStyle := cxstyl2; // стиль для = 0
End

получаем результат

TreeList

 

 

Ошибка SQL Server blocked access to STATEMENT

SQL Запрос на изменение данных UPDATEЕсли при попытке загрузить из внешнего файла возникают такие ошибки:

SQL Server blocked access to STATEMENT ‘OpenRowset/OpenDatasource’ of component ‘Ad Hoc Distributed Queries’ because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of ‘Ad Hoc Distributed Queries’ by using sp_configure. For more information about enabling ‘Ad Hoc Distributed Queries’, see «Surface Area Configuration» in SQL Server Books Online. SQL.sql 1 1

OLE DB provider ‘Microsoft.Jet.OLEDB.4.0’ cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode. SQL.sql 7 19

Cannot create an instance of OLE DB provider «MSDASC» for linked server «(null)». SQL.sql 1 1

Значит не настроен MSSQL.

Необходимо выполнить следующие строки:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
USE [master]
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO

После успешного выполнения этих строк все должно работать нормально.

MS SQL Импорт данных из внешнего файла

SQL Запрос на изменение данных UPDATEНеобходимо выбрать определенные данные из файла XLS, и загрузить в базу данных MS SQL.

Код как выбрать ниже, а добавление идет стандартно через «INSERT»

Для этого можно использовать «команду» opendatasource :

SELECT COD
     , PR
FROM
  opendatasource('MICROSOFT.ACE.OLEDB.12.0', 'Data Source="C:\C95.xls";Extended properties=Excel 8.0')...[Лист1$] AS tbl
WHERE PR<1000

Соответственно необходимо явно указать название столбцов COD и PR в файле XLS. К примеру как на картинке

XLS_PRICE

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

"EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

2

USE [master]
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO

MS SQL выборка по максимальной дате

Letter_Ru_phpНеобходимо сделать выборку из таблицы по максимальной дате каждого поля.

 

Допустим есть таблица ARTDATA

Id Name DATAVAL

1  A       01.01.2015
2  A       02.01.2015
3  B       01.01.2015

SELECT *
FROM
ARTDATA AS [data]
WHERE
DATAVAL = (SELECT max(DATAVAL)
FROM
ARTDATA
WHERE
Name = [data].Name)

Результат

2  A       02.01.2015
3  B       01.01.2015

Приведенный выше полностью рабочий пример, не единственное решение. Можно также сделать данную выборку по дате с помощью LEFTJOIN

 

 

The script engine has not been initialized to a valid language

Перестала работать программа “A”.

Выдает ошибку:

The operation could not be completed because the script engine has not been initialized to a valid language

скриншот проблемы

Повторная установка программы не решила проблемы.

Оказалось, что недавно был удален антивирус McAffe. После этого началась эта ошибка.

Uninstall McAffe не всегда корректно удаляет антивирус. Необходимо скачать с их сайта и запустить утилиту MCPR.exe (MCPR (C) McAfee, Inc).

После перезагрузки программа “A” уже работала без ошибок.