【问题标题】:How to return values from a RecordSet outside the Class?如何从类外的 RecordSet 中返回值?
【发布时间】: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>

【问题讨论】:

    标签: python python-2.7 ms-access qt4 recordset


    【解决方案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
    ...
    

    告诉我它是否有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多