|
|
|
| Так задумано в текстовом файле, что для ориентира в строке расставлены запятые:
P,13160,0,1350,450,0,0,0,RIGHT,,,
P,130,0,350,50,0,0,0,LEFT,,,
мне надо из этой строки добыть слово RIGHT или из второй строки добыть слово LEFT
я знаю, что слово это находится после восьмой запятой.
Какой шустрый вариант поиска можно бы забабахать?
Жду предложений. | |
|
| |
|
|
|
| а на кой тебе добывать слово - если ты знаешь его
просто поиск на instr (str_,"left") - и кол-во запятых тебя не должно волновать, читаем файл построчно - самый быстрый способ. | |
|
| |
|
|
|
| Я не знаю какое именно слово в строке, но знаю его позицию.
Надо его быстро выковырять. | |
|
| |
|
|
|
| ну если одно из них то проверяй на первое а отрицатльный резльтат даст наличие второго
или тебе нужно найти слово которое находится после 8-й запятой
тогда перебирай в цикле
instr(str_, ",")
блин а Spiit зачем придумали - разбюивай на массив и обращайся к 7-му (с 0 номерация) | |
|
| |
|
|
|
| никада Spiit ом не пользовался, только спиртом......
Надо почитать про него........ | |
|
| |
|
|
|
| там читать не фиг - задаем строку через запятую задаем разделитель и это присваиваем массиву - вся процедура закончена - массив готов | |
|
| |
|
|
|
| Спасибо - попёрло
retval = Split(TXT, ",", -1, vbTextCompare)
For i = 0 To UBound(retval)
MsgBox retval(i)
Next i | |
|
| |
|
|
|
| кому не спится в ночь глухую | |
|
| |
|
|
|
| Нам! | |
|
| |
|
|
|
| Я - днём прикорнул......
А ты чё не спишь? | |
|
| |
|
|
|
| не совет, а просьба... Если имеется созданная ВБА строка положительных целых чисел, как ее в рекордсет превратить? | |
|
| |
|
|
|
| Я таких задач не решал никада....
А Для каких это целей понадобилось? | |
|
| |
|
|
|
|
как ее в рекордсет превратить
|
что это значит?
из строки загнать каждое число строки в свою запись (превратить строку в столбец)
или как?
- считываем каждое число - создаем новую запись и загоняем ее туда - получаем тот же самый массив - смысл | |
|
| |
|
|
|
| У мну вопрос
retval = Split(TXT, ",", -1, vbTextCompare)
For i = 0 To UBound(retval)
MsgBox retval(i)
Next i
|
Как эту retval объявить?
Какого типа и ваще?????
чё
или как то иначе? | |
|
| |
|
|
|
| Split возвращает массив
описывай как массив строк.
Я правда уже не помню прокатит такая запись в vba или нет
если нет, то
| |
|
| |
|
|
|
| Тип переменной должен соответствовать принимаемому типу. Сплит возвращает массив. Соответственно и у тебя retval должен быть массивом. | |
|
| |
|
|
|
| dim retval() as string - так?
Пркатило.....
СПАСИБО! | |
|
| |
|
|
|
| что вы понимаете под "превратить в рекордсет" ?
есть как минимум 2 варианта
вариант 1
создать "виртуальный" (т.е. не имеющий реального набора данных) рекордсет (возможно только в adodb )
и в него добавить ваши данные используя методы Addnew и update
вариант 2
открыть рекордсет по какой нибуть таблице и запихнуть данные в него теми же Addnew и update
но в этом случае данные сохраняться в таблице.
ЗЫ. Опишите задачу шире, может вам рекордсет и не нужен. Что хотите делать? | |
|
| |
|
|
|
| для списка со множественным выбором пользователь может кликнуть на строке, а потом отменить и снова кликнуть. Для таких ситуаций нашел алгоритм, в котором повторный выбор нейтрализуется через выражение IN (" & strWhere & ")", где выбор пользователя записывается строчно через запятую. А мне эти аргументы нужны, чтобы к ним прикрутить еще некоторые значения из формы для апдейта некоторых записей и записать в таблу. Вдруг в этом топике обнаруживаю
retval = Split(TXT, ",", -1, vbTextCompare)
For i = 0 To UBound(retval)
MsgBox retval(i)
Next i
|
и под него пишу что-то такое (хотя тут же соображаю, что массивов не знаю
RetVal = Split(strWhere, ",", -1, vbTextCompare)
For i = 0 To UBound(RetVal)
rst.AddNew
rst![Функционал] = RetVal(i)
intEdIzm = Column(2, varItem)’что здесь должно быть пока еще не представляю, но из списка вижу что нужно вытягивать и Функционал и ЕдИзм, т.е. двумерный массив
rst![ЕдИзм] = intEdIzm
rst![МедОрг] = intMedOrgCode
rst![Регион] = intRegion
lngPlanVolum = DLookup("ПланОбъем", "сМедОргОбъемДеят", "КодМедОрг=" & intMedOrgCode & " And [ЕдИзм] = " & intEdIzm)
rst![ПланОбъемДеят] = lngPlanVolum
'MsgBox RetVal(i)
Next i
rst.Update
|
подскажите, как тянуть данные в массив и как вытаскивать их в рекордсет. Можа примеры кой-нить есть? | |
|
| |
|
|
|
| to osmor
есть строка типа "75","77","79","80","87","88","89","90","91","92" как ее превратить в
75
77
79
80
... и т.д. Полагаю, что либо рекордсет либо массив. А как? | |
|
| |
|
|
|
| Dim RETVAL() As String
Dim TXT as string
Dim i As integer
TXT = "75","77","79","80","87","88","89","90","91","92"
RETVAL = Split(TXT, ",", -1, vbTextCompare)
For i =0 To UBound (retval)
msgbox retval (i)
Next i | |
|
| |
|
|
|
| час, пробовал так:
Private Function RETVAL(TXT As String) As String
Dim TXT As String
Dim i As Integer
TXT = "75,77,79,80,87,88,89,90,91,92"
RETVAL = Split(TXT, ",", -1, vbTextCompare)
For i = 0 To UBound(RETVAL)
MsgBox RETVAL(i)
Next i
End Function
|
и так пробовал:
Private Sub paraclin()
Dim RETVAL() As String
Dim TXT As String
Dim i As Integer
TXT = "75,77,79,80,87,88,89,90,91,92"
RETVAL = Split(TXT, ",", -1, vbTextCompare)
For i = 0 To UBound(RETVAL)
MsgBox RETVAL(i)
Next i
End Sub
|
акс пиешт, что функция или суб не определена. ЧТо у меня не так? | |
|
| |
|
104 Кб. |
|
|
Вот вам подарочек
| |
|
| |
|
|
|
| чего не вижу. пытаясь скачать | |
|
| |
|
|
|
|
| подарочек не скачивается (показывает пустую старницу | |
|
| |
|
|
|
|
|
| час! не можете подсказать, почему в нижеследующем коде акc останавливается на строке "Next i" и пишет, что "Compile error: Next without For"
RETVAL = Split(gstrWhereParaclinic, ",", -1, vbTextCompare)
For i = 0 To UBound(RETVAL)
'Debug.Print RETVAL(i)
With rst
.AddNew
![Порядок] = i + 1
![МедОрг] = intMedOrgCode
![Регион] = intRegion
![Функционал] = RETVAL(i)
![ЕдИзм] = DLookup("ЕдИзм", "сШН", "КодФункционал=" & RETVAL(i))
lngPlanVolum = DLookup("ПланОбъем", "сМедОргОбъемДеят", "КодМедОрг=" & intMedOrgCode & " And [ЕдИзм] = " & intEdIzm)
![ПланОбъемДеят] = lngPlanVolum
.Update
Next i
|
| |
|
| |
|
|
|
|
| shanemac51, спс, получилось | |
|
| |
|
|
|
|
нормально отработало
проверь референсы, если у вас дает ошибку
Private Sub paraclin()
Dim RETVAL() As String
Dim TXT As String
Dim i As Integer
TXT = "75,77,79,80,87,88,89,90,91,92"
RETVAL = Split(TXT, ",", -1, vbTextCompare)
For i = 0 To UBound(RETVAL)
MsgBox RETVAL(i)
Next i
End Sub
|
| |
|
| |
|
|
|
|
| приаттачить с разделителем запятая и юзать как таблицу фильтры-шмильтры всякие | |
|
| |
|
|
|
|
| Спасибо Дядя Фёдор | |
|
| |
|
|
|
|
ибо в выражении
..=1 , 1 - тип вариант
|
Ошибаетесь.
?TypeName(1)
Integer
?TypeName(1.0)
Double | |
|
| |
|
|
|
| Я к коротким объявленьям - не привык
Да и как их говорить?
Мне так кажется - сломаешь весь язык
Коль словами нужно повторить..... | |
|
| |