如何从类外的 RecordSet 中返回值?
Posted
技术标签:
【中文标题】如何从类外的 RecordSet 中返回值?【英文标题】:How to return values from a RecordSet outside the Class? 【发布时间】:2014-08-29 05:07:41 【问题描述】:我正在尝试打印使用 RecordSet 获取的值。
如果我在方法内从 RecordSet 打印值,它就可以正常工作。 但是,如果我从该方法返回值,那么它会返回如下内容:
<win32com.gen_py.Microsoft ActiveX Data Objects 6.1 Library.Field instance at 0x38897624>
请建议如何正确返回值。 在显示表单之前,我想要全局变量“数据”的值,因为我需要将其值分配给 self.RollNo (QLineEdit)。 代码如下:
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>
【问题讨论】:
【参考方案1】:您确定不会在代码中某处更改数据的值吗? 尝试返回 int(data) 以查看此结果是否仍然存在。像这样:
...
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
...
告诉我它是否有效。
【讨论】:
以上是关于如何从类外的 RecordSet 中返回值?的主要内容,如果未能解决你的问题,请参考以下文章