
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.96] |
![]() |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
попробуи вместо asDateTime - Value. пусть сам с типом разберется
|
Сообщ.
#17
,
|
|
|
Use a number (as date value) in SQL text.
Example: 'SELECT * FROM Country WHERE Date1=36736' Actually, a date value is a number. So, #07.29.2000# = 36736. If you find a date value as a number then can use FormatFloat function: str1=FormatFloat('#', Date) //str1='36736' Finally, Query1.SQL.Text= 'SELECT * FROM Country WHERE Date1=' + FormatFloat('#', Date); Note: This solution is properly work BDE, VB, MS-Access, MS-SQL. |
Сообщ.
#18
,
|
|
|
При следующем коде:
Close; SQL.Clear; SQL.Add('SELECT *'); SQL.Add('FROM TDAT'); SQL.Add('WHERE S_DDT=#'+DE.EditText+'#'); SQL.Add('ORDER BY sss'); Open; ошибок синтаксиса программа не выдает, но странно себя ведет. Т.е. на некоторые даты реагирует как положено(10.20.2004, 20.10.2004), а все остальные просто не видит. Что за чертовщина? Кстати проблемма в синтаксисе была в том, что было не соответствие в маске ввода в Accesse и в компонентах Delphi. Везде в delphi подставил английскую маску даты и ошибка исчезла. |
Сообщ.
#19
,
|
|
|
Kobra, Пробовал и Value, результат тот же.
|
![]() |
Сообщ.
#20
,
|
|
Цитата nikvicfc, 12.10.04, 12:00 (10.20.2004, 20.10.2004), Какой формат даты (DD.MM.YYYY or MM.DD.YYYY)? Да и что лежит в DE.EditText |
Сообщ.
#21
,
|
|
|
select * from mytable where mydate = ' + FormatFloat('#', DE.Date)
|
Сообщ.
#22
,
|
|
|
Огромное всем спасибо!
Решение моего вопроса следующее: SQL.Clear; SQL.Add('SELECT *'); SQL.Add('FROM Table'); SQL.Add('WHERE S_Date=dateValue("'+DateEdit.EditText+'")'); Фильтрация выполняется как положено. " - двойные кавычки. Но видимо прав Show работать с параметрами надежнее, не нужно бутет подстраиваться на каждой машине. ![]() |
Сообщ.
#23
,
|
|
|
Vmesto ispol'zovaniia AsDateTime ili AsDate neobhodimo ispol'zovat' AsSQLTimeStamp. Dlia preobrazovaniia peremennoj tipa TDateTime v TimeStamp ispol'zujte funkciiu DateTimeToSQLTimeStamp iz modulia SqlTimSt (neobhodimo vstavit' ssylku na etot modul' v sekciiu uses).
A voobshche otvet na etot vopros nahoditsia na http://bdn.borland.com/article/0%2C1410%2C30078%2C00.html. Nadeius' u Vas s inglish vs? OK. IA prosto perev?l vkratce ![]() Добавлено У меня тоже возникает ошибка "dbExpress Error: Invalid Field Type" в режиме исполнения программы. Но не с полем Дата-Время, а даже и в таком коде: var FloatParam1, FloatParam2: Float; ... SQLDataSet1.Close; SQLDataSet1.ParamByName('FloatParam1').AsFloat := FloatParam1; SQLDataSet1.ParamByName('FloatParam2').AsFloat := FloatParam2; SQLDataSet1.Open;// <-----error ![]() Использую связку Delphi - Oracle |
Сообщ.
#24
,
|
|
|
попробуи вместо AsFloat - Value. пусть сам с типом разберется
|
Сообщ.
#25
,
|
|
|
![]() ![]() Close; SQL.Clear; SQL.Add('SELECT *'); SQL.Add('FROM TDAT'); SQL.Add('WHERE S_DDT=:d'); SQL.Add('ORDER BY sss'); parameters.ParseSQL(SQL.Text, true); parameters.parambyname('d').value:=DE.EditText; Open; |
Сообщ.
#26
,
|
|
|
Я сталкивасля с проблемой использования Даты в SQL запросах:
Вот что накопал: 1) Для каждой БД (MySQL, MSSQL, Access, BDE) в запросе должен использоваться свой формат даты: MM.DD.YYYY, DD.MM.YYYY, MM/DD/YYYY и т.д. какой формат конкретно у какой БД я вычислял эксперементально 2) В запросе я всегда дату ставлю в одиночные кавычки: "SELECT * FROM tablename WHERE date='24.11.2004'" "INSERT INTO tablename (id,date) VALUES(1,'24.11.2004')" 3) В программе на Delphi есть очень полезная функция: FormatDateTime Рабочий пример: dt:TDateTime; Query_SQL:String; dt := DateTimePicker1.DateTime; Query_SQL := 'INSERT INTO ClientCatalog (Name, Id_Group, Address, Description, DateCreate) VALUES('+ ''''+Edit2.Text+''''+ ','+Edit4.Text+ ','''+Edit3.Text+''''+ ','''+Memo1.Text+''''+ ','''+FormatDateTime('MM.DD.YYYY',dt)+''')'; DataModule1.ADOQuery1.Active := False; DataModule1.ADOQuery1.SQL.Clear; DataModule1.ADOQuery1.SQL.Add(Query_SQL); DataModule1.ADOQuery1.ExecSQL; Проблемы исчезали... |
Сообщ.
#27
,
|
|
|
Meverik, угу, спасибо тебе за наблюдения, только оформляй пожалуйста текст программы тегом code. Как - написано вверху в красной рамке.
M Сообщения были разделены в тему "две проблемы при конвертации" M Сообщения были разделены в тему "две проблемы при конвертации" |