如何在类外返回RecordSet的值?

0 投票
1 回答
1465 浏览
提问于 2025-04-18 18:56

我正在尝试打印一个通过 RecordSet 获取的值。

如果我在方法内部打印这个 RecordSet 的值,它工作得很好。可是如果我从那个方法返回这个值,它却返回一些奇怪的东西:

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

请告诉我怎么正确返回这个值。我想在显示表单之前获取全局变量 'data' 的值,因为我需要把它的值赋给 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 个回答

1

你确定你的代码里没有在某个地方改变数据的值吗?

试着把数据转换成整数,看看结果是否还存在。可以这样做:

...
 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
...

告诉我这样做是否有效。

撰写回答