Ошибка набора данных: в позиции 0 нет строки - PullRequest
1 голос
/ 11 ноября 2019

Я очень запутался в этой ошибке и не уверен, где продолжить поиск. Приведенный ниже код захватывает список клиентов, перебирает этот список, вызывая main (), если у клиента нет записей, перечисленных в поиске по базе данных (значение= 0 для COUNT).

Это сработало FINE на прошлой неделе, но сегодня с минимальными изменениями (запрос SQL-комментария) выдает IndexError для отдельных клиентов (не для всех), когда все перечисленные наборы данных, которые я просматривал в точках остановаесть строки с индексом [0].

Я также даже не вызываю какие-либо строки в этой точке, это вызывает исключение для main (self, customer), а customer - это строка.

    def __init__(self):
        self.ui = wpf.LoadComponent(self, 'storageInvoicing.xaml')

        self.databaseHead = 'db'
        self.databaseDet = 'db'

        customerList = invoiceQuery("SELECT DISTINCT(custno) from db order by custno")

        #self.invoiceNumber = invoiceQuery("SELECT TOP 1 invoicenumber FROM db order by invoicenumber desc")
        self.invoiceNumber = invoiceQuery("SELECT TOP 1 invno FROM db ORDER BY invno DESC")

        self.invoiceNumber = str(self.invoiceNumber.Tables[0].Rows[0][0])

        self.start_time = time.time()

        self.startDate = '10-28-2019'
        self.endDate = '11-03-2019'
        self.gstRate = 0.10

        for i in range(0, len(customerList.Tables[0].DefaultView)):
            customer = customerList.Tables[0].Rows[i][0]
            customer = customer.replace("'", r"''")
            invoiceCheck = invoiceQuery("SELECT COUNT(*) from db where custno = '%s' and invoicedate = '%s'" % (customer, self.endDate))

            if invoiceCheck.Tables[0].Rows.Count > 0:
                if invoiceCheck.Tables[0].Rows[0][0] == 0:
                    try:
                        self.main(customer.strip()) ## THROWS EXCEPTION HERE ##
                    except Exception as e:
                        print(e)

        print("--- %s seconds ---" % (time.time() - self.start_time))

Ниже приведена информация, полученная от местных жителей, когда клиент выдает ошибку:

customerList имеет в общей сложности 3334 строки данных, как видно из локальных данных> [3334] DataRow

invoiceCheck имеет в общей сложности 1 строку, как видно из локальных>> 0R DataRow

Все текущие наборы данных в памяти имеют индекс 0 или выше, но я все еще получаю ошибку на self.main(customer.strip ())

РЕДАКТИРОВАТЬ:

Изменение диапазона дат влияет на список клиентов, которые выдают ошибку.

...