2014-12-29 1 views
-1

Текущая информация должна быть обработана:Скрипт VB с вставкой sql. Преобразование типа VARCHAR данных в DateTime

Tid:   13.12.2014 01:48:48 

, что сценарий содержит обработку этого:

if isArray (arrString) then 
    if uBound (arrString) > 0 then 
    Select Case lcase (arrString(0)) 
     Case "tid": tid = trim (arrString (1)) & ":" & trim (arrString (2)) & ":" & trim (arrString (3)) 

При установке этого кода:

sql = "INSERT INTO LoginLogg VALUES ('" & tiden & "', '" & brukernavn & "', '" & maskinnavn & "', '" & operativsystem & "', '" & servicepack & "', '" & minne & "', '" & produsent & "', '" & modell & "', '" & bios & "/" & bios2 & "', '"& serienummer & "', '"& printere & "', '"& ipadresse & "', '"& imagedato & "', '" & opplosninger & "')" 

В SQL возвращается:

преобразование типа VARCHAR данных в тип данных даты и времени привело к вне-диапазона значений ErrorCode: 80040e07

Я не могу найти причину, почему она не будет работать. База данных была перенесена с 2003 на 2008 R2.

Если бы это было powershell, я бы смог это решить, но VB не был моим самым сильным костюмом.

Обновлено название, надеясь, что оно более подходит, наряду с кодом ввода sql.

+0

Администрирование (и предоставлять в SQL) дату и время в языке/культура/локали безразличного [формат ISO] (http://www.cl.cam.ac.uk/~mgk25 /iso-time.html), используя следующий шаблон: 'YYYY-MM-DD HH: mm: ss' – JosefZ

+0

Вопросы поиска справки по отладке (**« почему этот код не работает? »**) должен включать в себя желаемое поведение, * конкретная проблема или ошибка * и * кратчайший необходимый код * для воспроизведения ** в самом вопросе **. Вопросы без ** ясного заявления о проблеме ** не полезны для других читателей. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve). –

ответ

0
  1. Устранить расхождение между tid и tiden
  2. Смотрите, если питание утра/d/у строка - trim (arrString (2)) & "/" & trim (arrString (1)) & "/" & trim (arrString (3)) 'работает'
  3. Если (2) выходит из строя или вы не хотите взломать, попробуйте в Concat другой даты буквенные «# м/д/г #» в вашем SQL заявление
  4. Если (3) выходит из строя или вы хотите, чтобы сделать это правильно, используйте ADODB.Command/подготовленное заявление с даты параметра - получено по DateSerial() на CInt (arrString (...))
+0

Привет Я использовал tiden = Replace (tid, ".", "/"), Чтобы исправить/или - между датами, но все же это терпит неудачу при вставке sql. Я посмотрю, смогу ли я сообщить ваши советы – vya

+0

@vya - изменили ли вы заказ (m/d/y) в предложении (2)? –

+0

Cdate не конвертирует его, как здесь, я знаю, порядок написания, как и все. Второе решение, которое вы предложили, возвращает: 48/13.12.2014 01/58 – vya

0

Так я пытался жестко прописывать формат, который обычно принимает SQL: 2014/01/24 22:00:00 Это не удалось.

тогда я пытался научиться разделять строки с VB и присоединиться к ним, выполнив:

Dim ArrSpace, ArrDot 

ArrSpace = Split(tid, " ") 
ArrDot = Split(ArrSpace(0), ".") 
tid = ArrDot(2) & "/" & ArrDot(1) & "/" & ArrDot(0) & " " & ArrSpace(1) 

Затем вставив TID. теперь это сработало :) спасибо за то, что вы направили меня в правильном направлении.

Спасибо Ekkehard.Homer

Смежные вопросы