Я очень запутался в этой ошибке и не уверен, где продолжить поиск. Приведенный ниже код захватывает список клиентов, перебирает этот список, вызывая 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 ())
РЕДАКТИРОВАТЬ:
Изменение диапазона дат влияет на список клиентов, которые выдают ошибку.