Я разработчик Java. У меня есть старая программа в Delphi. В старой версии они работают с mdb
. Я исправил его для подключения к SQL Server. Все SQL-запросы реализованы с помощью TAdoQuery
.Формат даты подачи заявки
qryTemp.SQL.Text:='select sum(iif(ComeSumm>0,comesumm,0)),sum(iif(lostSumm>0,lostsumm,0)) from cash '+
'where (IdCashClause is null or idcashclause<>8) '+
' and cashNum='+IntToStr(i)+
' and CashType=0'+
' and format(PayDate,"dd/mm/yyyy")=format('''+DateToStr(Date)+''',"dd/mm/yyyy") ';
Программа генерирует исключение:
недопустимое имя столбца 'дд/мм/гггг'.
Я установил другой запрос для сравнения:
qryTemp.SQL.Text:=' select top 1 iif(ComeSumm>0,comesumm,0) from cash '
+' where idCashReason=1 and idCashClause=8 and cashNum='+IntToStr(i)
+' and PayDate<:D'
+' order by payDate desc';
qryTemp.Parameters.ParamByName('D').Value:=DateTimeToStr(Date);
Могу ли я быстро исправить все запросы для работы с SQL Server, не переписывая весь проект?
Поскольку ваш SQLServer поддерживает IIF, вы, похоже, находитесь на версии 2012. Тем не менее, вам придется исправить все/большинство запросов, что было бы oaccasion для переключения на параметры, как и для PayDate, в любом месте , здесь, например, для cashNum = '+ IntToStr (i). Возможно, вы могли бы переместить все SQL-запросы в качестве констант в один (resoure) файл для корректировок futur. – bummi
Спасибо. Я заменяю все параметры на дату, через 'qryTemp.Parameters.ParamByName ('D'). Значение: = DateTimeToStr (Date);' –
Что такое определение столбца для PayDate, это datetime или строка? – whosrdaddy