Объединение результатов из Split () - PullRequest
0 голосов
/ 10 января 2012

У меня возникла следующая проблема:

Следующая строка извлекается через связанные таблицы в БД MS Access:

string = Text1, Text2, Text3, "This, belongs, together", Text7, Text8, "This, Also, Belongs, Together", Text13, etc., etc., etc.

Указанные поля могут различаться по длине.

Когда я использую Split (string, ","), он теперь возвращает 13 значений, и кавычки, которые я могу удалить с заменой, не проблема. Проблема, с которой я сталкиваюсь, заключается в том, что текст между кавычками должен иметь значение 1. В приведенном выше примере это означало бы, что я должен получить 8 значений вместо 13. Это необходимо для запроса INSERT INTO к базе данных.

Вот что я получил до сих пор, что дает ошибку: Нижний индекс вне диапазона: 'i'

SqlJunk = "SELECT * FROM Con_Temp" 
Set rsCon = Server.CreateObject("ADODB.Recordset")
rsCon.Open SqlJunk, dbGlobalWeb, 3

Do While Not rsCon.EOF
Field = split(rsCon("Field1"),",")
For i = 0 to UBound(Field)
    If InStr(Field(i),"""") > 0 Then
        Field(i) = Replace(Field(i), """", "")
    End if
    If Field(i) <> "" Then
        If dbfields <> "" Then
            dbfields = dbfields & ",[" & Conveldnaam(i) & "]"
        Else
            dbfields = "[" & Conveldnaam(i) & "]"
        End if
        If dbvalues <> "" Then
            dbvalues = dbvalues & ",""" & Field(i) & """"
        Else
            dbvalues = """" & Field(i) & """"
        End if
    End if
    response.write(dbfields)
Next
SQL = "INSERT INTO ConInventory (" & dbfields & ") VALUES (" & dbvalues & ")"
response.write(SQL & "<br>")
dbGlobalWeb.Execute(SQL)
rsCon.MoveNext
dbfields = ""
dbvalues = ""
Loop

Есть мысли, как я мог бы объединить значения в кавычках?

Заранее спасибо!

Эрик

1 Ответ

0 голосов
/ 10 января 2012

Попробуйте эту логику и измените свой код соответственно: -

Dim str, strArray, count, combineStr
count = 0
combineStr = ""
str = "Text1, Text2, Text3, ""This, belongs, together"", Text7, Text8, ""This, Also, Belongs, Together"", Text13"
strArray = split(str, ", ")


For Each item In strArray
    If (Left(item, 1) = """") Then
        combineStr = combineStr & " " & item
        count = 1
    ElseIf (count = 1) Then
        If (Right(item, 1) = """") Then
            count = 0
        End If
        combineStr = combineStr & " " & item
    End If
    If (count = 0) Then
        If (combineStr = "") Then
            Response.Write("<br>" & item)
        ElseIf (combineStr <> "") Then
            Response.Write("<br>" & combineStr)
            combineStr = ""
        End If
    End If 
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...