2013-04-02 2 views
0

cher tout programmeur pro ici, im totalement nouveau ici, et je pourrais ne sais pas comment correctement comme question ici ..asp connexion ADO Microsoft VBScript Erreur d'exécution « 800a01a8 »

si je peux demander de l'aide, pourrait pls ici ici ici ... im ayant un problème avec simple asp avec structure oop ...

aidez-moi avec la fonction savedata pls. lorsqu'il est exécuté,

call savedata("insert","test_","name, id","lalala, 222","User_ID=3") 

obtenu erreur:

INSERT INTO test_ (nom, id) VALUES (lalala, 222)

... Erreur d'exécution Microsoft VBScript '800a01a8'

objet requis: 'Conn'

<% 
function declare_conn(sql,atr) 

dim conn, conn_ 
set conn = Server.CreateObject("ADODB.Connection") 
conn = Connect() 
set conn_ = Server.CreateObject("ADODB.Recordset") 
strConnect = _T("Driver={MySQL ODBC 3.51 Driver};Server=localhost;" 
    "Database=MyDatabase;User=MyUserName;Password=MyPassword;Option=4;"); 

if Cstr(atr)="open" then 
    conn_.CursorLocation = adUseClient 
    conn_.Open sql, conn, 3, 2 
    set conn_.ActiveConnection = nothing 
    set declare_conn=conn_ 
else if Cstr(atr)="exec" then 
     conn.Open 
     conn.Execute sql 
    end if 
end if 
end function 


function calldata(a,b,c,d) 

dim conn_string, sql_string 

    if c<>"" and d<>"" then 
     sql_string="SELECT "&Cstr(a)&" FROM "&Cstr(b)&" WHERE "&Cstr(c)&" = '"&Cstr(d)&"'" 
     response.write(sql_string) 
    else 
     sql_string="SELECT "&Cstr(a)&" FROM "&Cstr(b) 
     response.write(sql_string) 
    end if 

set conn_string = Server.CreateObject("ADODB.Recordset") 
set conn_string = declare_conn(sql_string,"open") 
set calldata = conn_string 

end function 


function savedata(a,b,c,d,e) 

dim conn_string, sql_string, c_, d_, update_string 
update_string = "" 
    if Cstr(a)="insert" then 
     sql_string="INSERT INTO "&Cstr(b)&" ("&Cstr(c)&") VALUES ("&Cstr(d)&")" 
    end if 
    response.write(sql_string) 
    'response.end 
    if Cstr(a)="update" then 
     c_ = split(c,", ",-1) 
     d_ = split(d,", ",-1) 
     response.write(c_) 
     response.end 
     if ubound(c_) = ubound(d_) then 
      do while not c_.eof 
       update_string=update_string&"("&Cstr(c_)&"="&Cstr(d_)&")," 
       c_.MoveNext : d_.MoveNext 
      loop 
     else 
      %><script type="text/javascript">alert("save function error: array out of bound");</script> <% 
     end if 
     if Cstr(e)<>"" then 
      sql_string="UPDATE "&Cstr(b)&" SET "&update_string&" WHERE "&Cstr(e) 
     else 
      sql_string="UPDATE "&Cstr(b)&" SET "&update_string 
     end if 
    end if 

'set conn_string = Server.CreateObject("ADODB.Recordset") 
call declare_conn(sql_string,"exec") 
end function 
%> 

Qu'est-ce que l'erreur signifie réellement? je crée une connexion à la base de données ADO dans

connect() 

encore, je peux courir sans problème pour

calldata() 

édition-dwerty_weird


sorry pour la ruckus ..

pour cette question, je savoir, je manque tht "Set" pour:

set conn=Connect() 

désolé pour la peine ... mais pour d'autres questions, j'ayant un problème

call savedata("update","test_","name, id","'lalala', 222","bil=1") 

il obtiendra l'erreur: erreur d'exécution Microsoft VBScript '800a01a8' objet requis /bkpi-msn/SPPro/function.asp, ligne 56 -

quelqu'un peut-il Aidez moi?

+0

pour cette question, je savoir, je manque tht "Set" pour: set conn = Connect() désolé pour la peine ... mais pour d'autres questions, j'ayant problème avec appel savedata ("mise à jour", "test _", "name, id", " 'lalala', 222", "bil = 1") il obtiendra erreur: erreur d'exécution Microsoft VBScript '800a01a8' Objet requis /b kpi-msn/SPPro/function.asp, ligne 56 –

Répondre

0

Il vous manque des guillemets simples dans vos données. La valeur du nom est une chaîne et doit être placée entre guillemets simples.

Vous l'avez déjà implémenté dans calldata() c'est pourquoi cela fonctionne très bien. Mettre à jour la même chose pour savedata aussi.

Note: Ceci est valable pour tous les paramètres de chaîne et peut appliquer une autre manière (en utilisant #) pour les paramètres de date/datetime aussi.

Veuillez utiliser ceci comme point de départ et suivez les meilleures pratiques de développement!

Espérons que cela aide!

Vivek

+0

ty pour répondre ... en quelque sorte, l'erreur pointant vers la syntaxe conn.Execute ... je tente de changer la chaîne, et l'erreur pointe toujours au même endroit .. –

+0

@dwerty_weird, l'erreur pointe toujours vers conn.Execute car c'est là que la base de données tente d'exécuter la requête. Pourriez-vous coller la requête que vous créez? (La requête finale, juste avant conn.Execute) –

+0

ty pour répondre ... INSERT INTO test_ (nom, id) VALUES ('lalala', 222) ce sera la dernière requête avant l'exécution ... comme, guillemets simples sera écrit en fonction d'appel ... comme savedata ("insérer", "test _", "nom, id", "'lalala', 222", "bil = 1") ... je parviens à résoudre ce problème. mais j'ai un autre problème ... –

Questions connexes