Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: SQL и дата Добавлено: 08.02.05 15:54  

Автор вопроса:  Andrey999 | Web-сайт: www.radio-device.narod.ru | ICQ: 30852361 
Подскажите как подставляется в SQL запрос дата, а то он уменя на запрос (danie.dateyzi)=#dast#) пишет "Несоответствие типа данных в выражении условия отбора. (Ошибка 3464)"

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 AlexF



Вопросов: 20
Ответов: 113
 Профиль | | #1 Добавлено: 08.02.05 16:41
Работа с датой - есть небольшое неудобство.( какая БД? SQL посылаешь из под ВБ? Лучше используй функции преобразования, если ВБ

Ответить

Номер ответа: 2
Автор ответа:
 AlexF



Вопросов: 20
Ответов: 113
 Профиль | | #2 Добавлено: 08.02.05 16:48
Если ВБ :
";(danie.dateyzi)=" & Num2Date(dast)

А это куда-нибудь в модуль:

Public Function Date2Num(strDate As String) As Long
'*******************************************************************
'Purpose : Stores date as long integer
'Inputs : String implementation of date value
'Returnes : Long integer representing provided date
'********************************************************************
    
    On Error GoTo err_hndl
    ;Dim lngResult As Long

    lngResult = CDate(strDate) - 29220
    MinMaxLong lngResult, -(2 ^ 15 - 2), 2 ^ 15 - 1
    ;Date2Num = lngResult

    Exit Function
err_hndl:
    ;Date2Num = 0
    MsgBox Err.Number, "mdlFuncs", ";Date2Num", Err.Description
    
End Function

Public Function Num2Date(lngDate) As String
'*******************************************************************
'Purpose : Converts Long into string representing date
'Inputs : Long integer implementing date value
'Returnes : String in format dd/mm/yyyy
'********************************************************************
    
    On Error GoTo err_hndl
    Num2Date$ = Format(lngDate + 29220, "dd/MM/yyyy";)
    
    Exit Function
err_hndl:
    MsgBox Err.Number, "mdlFuncs", "Num2Date", Err.Description
    Num2Date = ""
End Function

Ответить

Номер ответа: 3
Автор ответа:
 AlexF



Вопросов: 20
Ответов: 113
 Профиль | | #3 Добавлено: 08.02.05 16:50
Sorri, zabil. Eto toje v modul:

Private Sub MinMaxLong(lngVal1 As Long, lngVal2 As Long, lngVal3 As Long)
'*******************************************************************
'Purpose : Limits value inside provided ranks
'Inputs : Long integers of value and its ranks
'Returnes : Long integer
'********************************************************************
    If lngVal1 < lngVal2 Then lngVal1 = lngVal2
    If lngVal1 > lngVal3 Then lngVal1 = lngVal3
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Andrey999



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #4
Добавлено: 08.02.05 17:36
Все равно не работает теперь пишет "<Сообщение> в выражении запроса <выражение>. (Ошибка 3075)". База данных Access, поле из которого я выбираю в формате дата/время mm.dd.yyyy , что еще можно попробовать? Пишу на VB6

Ответить

Номер ответа: 5
Автор ответа:
 AlexF



Вопросов: 20
Ответов: 113
 Профиль | | #5 Добавлено: 08.02.05 19:25
Конечно, сделаы тип поля - Long. Так будет работать четко, сортировка быстрее и выборка.

еше попробуй :

"SELECT * FROM tblDates WHERE fldDate= " & format(yourdate, "mm.dd.yyyy";)

Nio eto glyuchit

Ответить

Номер ответа: 6
Автор ответа:
 Andrey999



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #6
Добавлено: 08.02.05 19:48
Я так и сделал вот смотри
Private Sub Command2_Click()
Dim strSQL As String, SQL As String
Dim dast As Date
dast = DTPicker1
'Создаем SQL-запрос

strSQL = "SELECT DISTINCT client.idFam, client.pol, danie.vidyzi, danie.dateyzi FROM client INNER JOIN danie ON client.idFam = danie.idFam WHERE (danie.idFam LIKE '*" & Text1.Text & "*') AND (client.pol = '" & Combo1 & "') OR (danie.vidyzi = '" & DBCombo1 & "') OR (danie.dateyzi)='" & Format$(dast, "dd.mm.yyyy";) & "')"
Data1.RecordSource = strSQL
Data1.Refresh

End Sub
После этого выводится ошибка ""<Сообщение> в выражении запроса <выражение>. (Ошибка 3075)". И в сообщении об ошибке выводится запрос там все данные верны и все же он глючит почему-то.

Ответить

Номер ответа: 7
Автор ответа:
 AlexF



Вопросов: 20
Ответов: 113
 Профиль | | #7 Добавлено: 08.02.05 20:29
Это работает, но дата - очень капризная вещь. На разных компах будет по разному работать. Поэтому, советую переделать тип поля в номер и использовать функции. Это, если пишешь серьезную программу. А этот пример работает.
только в базе данных в формате поля дата установи : dd\.mm\.yyyy

Private Sub Command2_Click()
Dim strSQL As String, SQL As String
Dim dast As String
dast = Format(DTPicker1, "dd/mm/yyyy";)
'Создаем SQL-запрос

strSQL = "SELECT DISTINCT client.idFam, client.pol, danie.vidyzi, danie.dateyzi FROM client INNER JOIN danie ON client.idFam = danie.idFam WHERE (danie.idFam LIKE '*" & Text1.Text & "*') AND (client.pol = '" & Combo1 & "') OR (danie.vidyzi = '" & DBCombo1 & "') OR (danie.dateyzi)=#" & dast &"#)"
Data1.RecordSource = strSQL
Data1.Refresh

End Sub

Ответить

Номер ответа: 8
Автор ответа:
 Andrey999



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #8
Добавлено: 08.02.05 22:19
Большое спасибо все сделал

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам