Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: VB i SQLServer2000 format daty.
rzezba




Typ: neutral
Postów: 15
Zarejestrowany: Nov 2002
VB i SQLServer2000 format daty.

Witajcie.

To zapewne jakaś duperela ale czy wie ktoś może
dlaczego wpisanie do pola typu datatime
(czy datastamp niepamiętam jak to się nazywa w SQL Server)
wartości z funkcji Date() VB powoduje, że wpisana
data ma wartość powiedzmy 27-12-1899 !!!

Czyli Insert w VB:
"INSERT INTO tabela (kolumna_z_data) VALUES " & Date

Powoduje ,że w bazie pojawia sie kosmiczna data
z roku 1899 !!!

Będę wdzięczny za pomoc

Pozdrawiam - Rzeźba


_____________________________________________
Rzezba

14-01-2005 07:35
Pokaż profil rzezba  Wyślij email do rzezba   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

zapis w formie:
"INSERT INTO tabela (kolumna_z_data) VALUES " & Date & ";"
nie jest prawidłowy, bo powinien wyglądać tak:
"INSERT INTO tabela (kolumna_z_data) VALUES #" & Date & "#;"
Oczywiście, to nie zawsze rozwiązuje problem
Najlepiej gdybyś sformatował datę na format amerykański:
"INSERT INTO tabela (kolumna_z_data) VALUES #" & Format(Date,"MM/dd/yyyy" & "#;"
To powinno pomóc.


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

14-01-2005 20:48
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
rzezba




Typ: neutral
Postów: 15
Zarejestrowany: Nov 2002
Dzięki

Dzięki sprawdze . Jeśli zadziała masz u mnie browca


_____________________________________________
Rzezba

15-01-2005 09:03
Pokaż profil rzezba  Wyślij email do rzezba   
rzezba




Typ: neutral
Postów: 15
Zarejestrowany: Nov 2002
No niestety nie działa :(

Jednak pomysł Losmac'a okazał się
nieskuteczny. VB wyrzuca błąd składniowy
po zastosowaniu znaku "#"  w stringu.
Formatowanie daty na modłe amarykańską
też nie zadziałało Data dalej zapisywana jest
byle jak Czyli np 27.12.1899

I co teraz ?
Help

[Post edytowany dnia 17-01-2005 07:57 przez rzezba]


_____________________________________________
Rzezba

17-01-2005 07:56
Pokaż profil rzezba  Wyślij email do rzezba   
JoFerrari




Typ: neutral
Postów: 75
Zarejestrowany: Apr 2003

Po pierwsze. Musisz wpisywac datę bez niczego w sql server bez '' i bez ## zamiast tego najlepiej uzyc funkcji CONVERT

Po drugie najbezpieczniej nie robic tego Execute tylko za pomocą ADO tzn. Rst!data= data - ale to tylko moje przemyslenie

Ja uzywam takiego rozwiazania . Moze wymyslisz lepsze. Najlepiej dochodzic do takich rzeczy robiąc query w Enterprise Menager i sprawdzajac jak sql sam to optymalizuje. Ty wpisujesz swoje a on przed wykonaniem i tak to zmieni ;-)

To moj sposob:

Data2 - to kontrolka maskedbox z kontrola poprawnosci dat "dd/MM/rrrr"

rst.open "select data from cos where data=" & DatSQL(Data2)

connext.execute "insert into cos(data) values(" datsql(data2) & ""

rst!data=data2 - w tym wypadku bez funkcji

Ta funkcja:

Function DatSQL(wart As String)
Dim Dd As String
Dim Mm As String
Dim Rrrr As String

Dd = Mid(wart, 1, 2)
Mm = Mid(wart, 4, 2)
Rrrr = Mid(wart, 7, 4)

DatSQL = "CONVERT(DATETIME,'" & Rrrr & "-" & Mm & "-" & Dd & "',102)"

End Function

Duzo namęczylem sie w zyciu z datami . To w accessie to sql albo mysql

To dziala od dlugiego czasu u mnie bez zarzutu
Mam nadzieje ze pomoglem

17-01-2005 17:38
Pokaż profil JoFerrari  Wyślij email do JoFerrari   
Wszystkich odpowiedzi: 4 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1