2010-05-13 6 views
0

je me connecte à une table MySQL via vba excel et je suis le mettre à jour:Connexion Excel pour Mysql Mise à jour PROBLÈME

Set cn = New ADODB.Connection 
cn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _ 
    "SERVER=localhost;" & _ 
    "DATABASE=employees;" & _ 
    "USER=root;" & _ 
    "PASSWORD=M1llen;" & _ 
    "Option=3" 
'lets get the batch info 
' 
' open a recordset 
Set rs = New ADODB.Recordset 
rs.Open "batchinfo", cn, adOpenKeyset, adLockOptimistic, adCmdTable 
' all records in a table from Report 1 
'Set wsSheet1 = wbBook.Worksheets(1) 
' better refer by name 
'Set wsSheet1 = wbBook.Worksheets.("Report 1") 
Worksheets.Item("Report 1").Select 
dpath = Range("B2").Text 
atime = Trim(Range("B3").Text) 
rtime = Trim(Range("B4").Text) 
lcalib = Trim(Range("B5").Text) 
aname = Trim(Range("B6").Text) 
rname = Trim(Range("B7").Text) 
bstate = Trim(Range("B8").Text) 

instrument = GetInstrFromXML() 

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

le problème est que le seul champ qui est mise à jour est le champ de l'instrument !!

ia ici desc de la table batchinfo mysql:

mysql> desc batchinfo; 
+--------------+---------+------+-----+---------+----------------+ 
| Field  | Type | Null | Key | Default | Extra   | 
+--------------+---------+------+-----+---------+----------------+ 
| rowid  | int(11) | NO | PRI | NULL | auto_increment | 
| datapath  | text | YES |  | NULL |    | 
| analysistime | text | YES |  | NULL |    | 
| reporttime | text | YES |  | NULL |    | 
| lastcalib | text | YES |  | NULL |    | 
| analystname | text | YES |  | NULL |    | 
| reportname | text | YES |  | NULL |    | 
| batchstate | text | YES |  | NULL |    | 
| instrument | text | YES |  | NULL |    | 
+--------------+---------+------+-----+---------+----------------+ 
9 rows in set (0.00 sec) 

chose drôle est que quand je recrée la table sans auto_increment il fonctionne très bien

j'ai vraiment besoin de quelqu'un pour répondre à cette question, je ne vous souciez pas si vous avez une intuition ou pas exactement sûr, je vais essayer une solution

+0

S'il vous plaît, s'il vous plaît, s'il vous plaît ne garde pas poser la même question encore et encore. Il suffit de modifier votre question originale. Tandis que j'aime les questions d'Excel et de VBA, il n'y a pas une énorme population d'utilisateurs de VBA ici pour aider. Vous pouvez essayer sur d'autres forums VBA. –

Répondre

4

Je ne suis pas familier avec MySQL mais TEXT ressemble à un type de blob? Si oui, je suis surpris qu'il fonctionne du tout comme ADO nécessite une manipulation spéciale pour les BLOBS (http://dev.mysql.com/tech-resources/articles/vb-blob-handling.html)

Essayez plutôt un type VARCHAR.

Vous pouvez également essayer ADOCn.Execute "INSERT ..."

+0

alex merci pour votre réponse, pourquoi dites-vous c'est un blob? son texte juste régulier –

+0

WOWOWOWOOW VOUS ÊTES L'HOMME !!!!!!!!!!!! ÇA MARCHE!!!!!!!!! WOWOWOWO. Pouvez-vous s'il vous plaît expliquer pourquoi cela a-t-il fonctionné avec varchar et non avec du texte!?! ?? –

+1

TEXT ne ressemble à d'autres types comme int et varchar http://dev.mysql.com/doc/refman/5.0/en/blob.html et doit probablement être traité différemment, vous devrez demander à une personne MySQL à ce sujet . –