Страница: 1 |
|
Вопрос: Условие
|
Добавлено: 15.04.09 11:52
|
|
Автор вопроса: Iren | ICQ: 496876583
|
Добрый день! Я делаю поиск информации по IMEI из файла, в цикле я указываю следующее условие, если по данному IMEI есть данные, то он вытаскивает, если нет, то пишет, что по данному IMEI нет информации в системе...
Do While dr.Read()
If dr.HasRows Then
If pl <> s Then
ws.Cells(i, 2) = "IMEI: " + s
i = i + 1
pl = s
End If
ws.Cells(i, 2) = dr("all_po_abonentu")
i = i + 1
Else : ws.Cells(i, 2) = "IMEI: " + s + " Такого IMEI в системе не существует"
End If
Loop
но в итоге если иноформации по IMEI нет, он ничего не возвращает, подскажите пожалуйста в чем ошибка?
Ответить
|
Номер ответа: 2 Автор ответа: Alfred
Вопросов: 4 Ответов: 22
|
Профиль | | #2
|
Добавлено: 15.04.09 13:42
|
Do While dr. Read()
If dr.HasRows Then
If pl <> s Then
ws.Cells(i, 2) = "IMEI: " + s
i = i + 1
pl = s
Else : ws.Cells(i, 2) = "IMEI: " + s + " Такого IMEI в системе не существует"
End If
ws.Cells(i, 2) = dr("all_po_abonentu"
i = i + 1
End If
Loop
Ответить
|
Номер ответа: 4 Автор ответа: Iren
ICQ: 496876583
Вопросов: 11 Ответов: 25
|
Профиль | | #4
|
Добавлено: 16.04.09 09:55
|
Do While dr. Read()
If dr.HasRows Then
If pl <> s Then
ws.Cells(i, 2) = "IMEI: " + s
i = i + 1
pl = s
Else : ws.Cells(i, 2) = "IMEI: " + s + " Такого IMEI в системе не существует"
End If
ws.Cells(i, 2) = dr("all_po_abonentu"
i = i + 1
End If
Loop
Я исправила, но все равно, если информации по данному IMEI нет, он ничего не показывает.
Ответить
|
Номер ответа: 6 Автор ответа: Iren
ICQ: 496876583
Вопросов: 11 Ответов: 25
|
Профиль | | #6
|
Добавлено: 16.04.09 13:26
|
Imports System.Data
Imports System.Data.OracleClient
Imports System.Data.OracleClient.OracleDataReader
Imports System.Data.OracleClient.OracleParameterCollection
Imports Excel.XlBordersIndex
Imports Excel.XlHAlign
Imports Excel.XlVAlign
Public Class ReadFromFile
Private Sub Button1_Click( ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim app As New Excel.Application
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet
wb = app.Workbooks.Add
ws = wb.Worksheets(1)
OpenFileDialog1.InitialDirectory = "C:\TxtFiles"
OpenFileDialog1.Filter = "Txt Files|*.txt"
OpenFileDialog1.Title = " Select a Txt Files"
OpenFileDialog1.ShowDialog()
Dim txtfile As Integer = FreeFile()
Dim s As String = ""
Dim i As Integer = 2
Dim pl As Long
Try
FileOpen(txtfile, OpenFileDialog1.FileName, OpenMode. Input)
Catch ex As Exception
MsgBox("Невозможно открыть файл, т.к. он занят другим приложением или его нет!", MsgBoxStyle.Critical, "Открытие"
Exit Sub
End Try
Do While Not EOF(txtfile)
'Input(txtfile, s)
s = LineInput(1) 'эта команда сама переходит на следующую строку
Dim comm As OracleCommand = New OracleCommand("select IMEI, all_po_abonentu " & _
"from calls c " & _
"where c.imei like '" + s + "' ", conn)
commIMEI.CommandType = CommandType.Text
Dim dr As OracleDataReader
dr = commIMEI.ExecuteReader
Do While dr. Read()
If dr.HasRows Then
If pl <> s Then
ws.Cells(i, 2) = "IMEI: " + s
i = i + 1
pl = s
Else : ws.Cells(i, 2) = "IMEI: " + s + " Такого IMEI в системе не существует"
End If
ws.Cells(i, 2) = dr("all_po_abonentu"
i = i + 1
End If
Loop
ws.Range(ws.Cells(2, 2), ws.Cells(i, 2)).Font.Size = 12
ws.Range(ws.Cells(2, 2), ws.Cells(i, 2)).HorizontalAlignment = xlHAlignGeneral
ws.Range(ws.Cells(2, 2), ws.Cells(i, 2)).VerticalAlignment = xlVAlignTop
ws.Range(ws.Cells(2, 2), ws.Cells(i, 2)).ColumnWidth = 90
ws.Range(ws.Cells(2, 2), ws.Cells(i, 2)).RowHeight = 85
ws.Range(ws.Cells(2, 2), ws.Cells(i, 2)).WrapText = True
dr.Close()
Loop
FileClose(txtfile)
app.Visible() = True
End Sub
End Class
Ответить
|
Номер ответа: 7 Автор ответа: Iren
ICQ: 496876583
Вопросов: 11 Ответов: 25
|
Профиль | | #7
|
Добавлено: 17.04.09 15:58
|
Я немного изменила условие...
Do While dr. Read()
If dr.HasRows Then
ws.Cells(i, 2) = "IMEI: " + s
i = i + 1
ws.Cells(i, 2) = dr("all_po_abonentu"
i = i + 1
Else
ws.Cells(i, 2) = "IMEI: " + s + " Такого IMEI в системе не существует"
End If
Loop[CODE]
Но в итоге если по IMEI есть информация, он вытаскивает, иначе ничего, просто пустое значение, а должен писать Такого IMEI не существует. Помогите пожалуйста, что не правильно, в чем ошибка?
Ответить
|
Номер ответа: 8 Автор ответа: Iren
ICQ: 496876583
Вопросов: 11 Ответов: 25
|
Профиль | | #8
|
Добавлено: 21.04.09 16:52
|
Вот весь мой код...
[SRC vba]Dim app As New Excel.Application
 im wb As Excel.Workbook
 im ws As Excel.Worksheet
wb = app.Workbooks.Add
ws = wb.Worksheets(1)
OpenFileDialog1.InitialDirectory = "C:\TxtFiles"
OpenFileDialog1.Filter = "Txt Files|*.txt"
OpenFileDialog1.Title = "Select a Txt Files"
OpenFileDialog1.ShowDialog()
 im txtfile As Integer = FreeFile()
 im s As String = ""
 im i As Integer = 2
'Dim pl As Long
Try
FileOpen(txtfile, OpenFileDialog1.FileName, OpenMode.Input)
Catch ex As Exception
MsgBox("Невозможно открыть файл, т.к. он занят другим приложением или его нет!", MsgBoxStyle.Critical, "Открытие"
Exit Sub
End Try
 o While Not EOF(txtfile)
'Input(txtfile, s)
s = LineInput(1) 'эта команда сама переходит на следующую строку
 im commIMEI As OracleCommand = New OracleCommand("select " & _
"'IMEI ' || ca.imei || ' использовал(и) абонент(ы):' IMEI, " & _
"p.phone_number || ' ' || c.name || ', ' || to_char(c.date_1, 'DD.MM.YYYY') || ' года рождения, прописан(а) по адресу: ' || a. Address all_po_abonentu " & _
"from clients c, " & _
"phones p, " & _
"addresses a, " & _
"calls ca " & _
"where c.client_id = p.client_client_id " & _
"and c.client_id = a.client_client_id " & _
"and c.client_id = ca.client_client_id " & _
"and ca.start_date>=:START_DATE " & _
"and ca.start_date<=to_date(:END_DATE)+1 " & _
"and ca.imei like '" + s + "'", conn)
commIMEI.CommandType = CommandType.Text
 im im, ps, pe As New OracleClient.OracleParameter
ps.ParameterName = ":START_DATE"
ps.Direction = ParameterDirection.Input
ps.OracleType = OracleType.DateTime
ps.Value = DTP1.Text
commIMEI.Parameters.Add(ps)
pe.ParameterName = ":END_DATE"
pe.Direction = ParameterDirection.Input
pe.OracleType = OracleType.DateTime
pe.Value = DTP2.Text
commIMEI.Parameters.Add(pe)
 im dr As OracleDataReader
dr = commIMEI.ExecuteReader
If dr.HasRows Then
 o While dr.Read()
ws.Cells(i, 2) = "IMEI: " + s
ws.Cells(i, 3) = dr("all_po_abonentu"
i = i + 1
Loop
Else : ws.Cells(i, 2) = "IMEI: " + s + " Такого IMEI в системе не существует"
End If
ws.Range(ws.Cells(2, 2), ws.Cells(i, 3)).Font.Size = 12
ws.Range(ws.Cells(2, 2), ws.Cells(i, 3)).HorizontalAlignment = xlHAlignGeneral
ws.Range(ws.Cells(2, 2), ws.Cells(i, 3)).VerticalAlignment = xlVAlignTop
ws.Range(ws.Cells(2, 2), ws.Cells(i, 3)).WrapText = True
ws.Range(ws.Cells(2, 3), ws.Cells(i, 3)).ColumnWidth = 90
ws.Range(ws.Cells(2, 2), ws.Cells(i, 2)).ColumnWidth = 25
ws.Range(ws.Cells(2, 2), ws.Cells(i, 3)).RowHeight = 85
dr.Close()
Loop
FileClose(txtfile)
app.Visible() = True[/SRC]
Еще раз опишу свой вопрос. Первый цикл начинает считывать каждую строку (далее IMEI)из текстового файла, значит берет IMEI, присваивает переменной s, которая в запросе, данные запроса записываются в источник DataReader, далее условие проверяет есть ли такой IMEI в системе, если да то идет второй цикл, который вытаскиват данные по IMEI, если нет, то дожен выдать сообщение Такого IMEI в системе нет. Но в итоге если в файле из 5 IMEI есть только 2, то он вытаскивает информацию по этим 2 IMEI, а по тем которых нет он пишет сообщение, что Такого IMEI в системе нет только для одного из них, т.е. я так думаю здесь дело в счетчике, нужен счетчик внутри первого цикла, помогите пожалуйста как это сделать?
Ответить
|
Страница: 1 |
Поиск по форуму