2010-05-12 3 views
0

я есть:Почему ADODB вставляет значения NULL при обновлении?

With rs 
    .AddNew ' create a new record 
    ' add values to each field in the record 
    .Fields("datapath") = dpath 
    .Fields("analysistime") = "atime" 
    .Fields("reporttime") = "rtime" 
    .Fields("lastcalib") = "lcalib" 
    .Fields("analystname") = "aname" 
    .Fields("reportname") = "rname" 
    .Fields("batchstate") = "bstate" 
    .Fields("instrument") = "NA" 
    .Update ' stores the new record 
End With 

, когда я проверить базу данных, он выглядит, как он только вставил последнее поле!

Кто-нибудь столкнулся с этой проблемой?

+0

что реальные данные? Конечно, время отчетов - это поле datetime и не принимает текст «rtime»? Это просто пример, другие поля страдают от подобных проблем. – Fionnuala

+0

remou, хороший вопрос, нет, я уверен, что его весь текст, он примет его определенно –

+0

Я боюсь, что я проверил это с помощью Excel и MySQL, используя тестовую таблицу, и все поля обновлены, как ожидалось. Попробуйте эту таблицу для тестирования: создать таблицу binfo (текст в формате datapath, текст анализа, текст отчета, текст lastcalib, текст аналитического имени, текст отчета, текст в формате пакетного ввода, текст инструмента); – Fionnuala

ответ

3

EDIT: Приведенный ниже код работает, но Corret решения можно найти здесь: Connecting Excel to Mysql Update PROBLEM

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


Это похоже на работу, но не спрашивайте меня, почему:

dpath = "a" ''Trim(Range("B2").Text) 
atime = "a" ''Trim(Range("B3").Text) 
rtime = "a" ''Trim(Range("B4").Text) 
lcalib = "a" ''Trim(Range("B5").Text) 
aname = "a" ''Trim(Range("B6").Text) 
rname = "a" ''Trim(Range("B7").Text) 
bstate = "a" ''Trim(Range("B8").Text) 

cn.Open strCon 
cmd.ActiveConnection = cn 
cmd.CommandText = _ 
    "INSERT INTO `batchinfo` (`datapath`, `analysistime`," _ 
     & "`reporttime`,`lastcalib`,`analystname`,`reportname`," _ 
     & "`batchstate`,`instrument`) " _ 
     & "VALUES (?,?,?,?,?,?,?,?);" 

cmd.Parameters.Append _ 
    cmd.CreateParameter("datapath", adChar, adParamInput, 100) 
cmd.Parameters.Append _ 
    cmd.CreateParameter("analysistime", adChar, adParamInput, 100) 
cmd.Parameters.Append _ 
    cmd.CreateParameter("reporttime", adChar, adParamInput, 100) 
cmd.Parameters.Append _ 
    cmd.CreateParameter("lastcalib", adChar, adParamInput, 100) 
cmd.Parameters.Append _ 
    cmd.CreateParameter("analystname", adChar, adParamInput, 100) 
cmd.Parameters.Append _ 
    cmd.CreateParameter("reportname", adChar, adParamInput, 100) 
cmd.Parameters.Append _ 
    cmd.CreateParameter("batchstate", adChar, adParamInput, 100) 
cmd.Parameters.Append _ 
    cmd.CreateParameter("instrument", adChar, adParamInput, 100) 

cmd.Parameters("datapath").Value = "abc" 
cmd.Parameters("analysistime").Value = atime 
cmd.Parameters("reporttime").Value = rtime 
cmd.Parameters("lastcalib").Value = lcalib 
cmd.Parameters("analystname").Value = aname 
cmd.Parameters("reportname").Value = rname 
cmd.Parameters("batchstate").Value = "bstate" 
cmd.Parameters("instrument").Value = "NA" 

cmd.Execute