如何从类之外的RecordSet中返回值?

问题描述:

我想通过使用RecordSet打印取得的值。如何从类之外的RecordSet中返回值?

如果我在方法中打印RecordSet的值表单,它工作得很好。 但是,如果我从方法返回的值,然后返回类似:

<win32com.gen_py.Microsoft ActiveX Data Objects 6.1 Library.Field instance at 0x38897624> 

请建议如何正确返回值。 因为我需要将它的值赋给self.RollNo(QLineEdit),所以我希望显示表单之前全局变量'data'的值。 的代码如下:

import sys 
import os 
from win32com.client import Dispatch 
from adoconstants import * 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

class Form(QDialog): 
    def __init__(self,parent=None): 
     super(Form,self).__init__(parent) 

     self.RollNo = QLineEdit() 
    .... 
    .... 

    def launch(self): 
     oConn = Dispatch('ADODB.Connection') 
     oConn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Users\DELL\Student DB.accdb;Uid=Admin;Pwd=;" 
     oConn.Open() 

     if oConn.State == adStateOpen: 
      oRS = Dispatch('ADODB.RecordSet') 
      oRS.ActiveConnection = oConn 
      oRS.Open("Select LAST(Enrollment_Number) from Student_Info") 
      global data 
      data = oRS.Fields.Item(0) # number 53 is fetched from the last record of Enrollment_Number field 
      print data 
      return data 
      oRS.Close() 
      oRS = None 
     else: 
      print "Connection Failed" 
     if oConn.State == adStateOpen: 
      oConn.Close() 
     oConn = None 

app=QApplication(sys.argv) 
form=Form() 
print form.launch() 
app.exec_() 

结果:

53 
<win32com.gen_py.Microsoft ActiveX Data Objects 6.1 Library.Field instance at 0x38897624> 

你确定你不会在你的代码更改数据的价值的地方? 尝试返回int(数据)以查看此结果是否仍然存在。像这样:

... 
if oConn.State == adStateOpen: 
      oRS = Dispatch('ADODB.RecordSet') 
      oRS.ActiveConnection = oConn 
      oRS.Open("Select LAST(Enrollment_Number) from Student_Info") 
      global data 
      data = oRS.Fields.Item(0) # number 53 is fetched from the last record of Enrollment_Number field 
      print data 
      return int(data) 
      oRS.Close() 
      oRS = None 
... 

告诉我,如果它的工作。

+0

谢谢你的作品:) – Ejaz 2014-08-29 05:51:26