Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 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 нет, он ничего не возвращает, подскажите пожалуйста в чем ошибка?

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Alfred



Вопросов: 4
Ответов: 22
 Профиль | | #1 Добавлено: 15.04.09 13:32
If dr.HasRows Then
  If pl <> s Then
    ws.Cells(i, 2) = "IMEI: " + s
    i = i + 1
    pl = s
  'End If вот тут ошибка
...

Ответить

Номер ответа: 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

Ответить

Номер ответа: 3
Автор ответа:
 Iren



ICQ: 496876583 

Вопросов: 11
Ответов: 25
 Профиль | | #3 Добавлено: 15.04.09 14:26
Тоже самое :(

Ответить

Номер ответа: 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 нет, он ничего не показывает.

Ответить

Номер ответа: 5
Автор ответа:
 Andrey



Вопросов: 1
Ответов: 8
 Профиль | | #5 Добавлено: 16.04.09 11:47
Дай код целиком.

Ответить

Номер ответа: 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
            ;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 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

                ;Dim 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)

                ;Dim dr As OracleDataReader
                dr = commIMEI.ExecuteReader

                If dr.HasRows Then
                    ;Do 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 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам