|
|
|
| Кто сталкивался с преобразованиями с полями memo
Ребята нужна ваша помощи может кто даст совет или ссылку
Есть поле memo в это поле заносились такие данные и очень долго
Свидетельство № 244 от 8.10.1992 г.
Постановление № 31 от 19.06.1992 г.
Свидетельство о смерти № 591847 от 11.01.2006 г.
Стал преобразовывать базу данных и потребовалось чтоб это поле стало отдельной таблицей «Принятые документ» и имело такой вид
«документ» ; «номер» ; «дата»
Вопрос № 1
Как в поле memo найти знак “Enter”
Вопрос № 2
Как перебрать все записи и перенести все данные в другую таблицу
Прошу за такой каламбур прощения
и не требую чтоб кто-то написал мне код прошу только ссылку | |
|
| |
|
|
|
| Если везде стоит (г.) то задача решаема.
функция для получения элемента из строки с разделителями
′Вызов функции
MsgBox ExpandStr("Waw;2347859;dfskgdkf",";",2) ′2347859
′Сама функция
Public Function ExpandStr(stroka As String, Razdel As String, numpos As Long)
Dim n1 As Long
Dim s1 As String
Dim v1 As String
Dim v2 As String
Dim v3 As String
Dim i As Long
v3 = stroka
s1 = Razdel
n1 = InStr(1, v3, s1)
i = 0
If n1 > 0 Then
Do
v1 = Mid(v3, 1, n1 - 1) ′возвращает слово до поисковой строки
v2 = Mid(v3, n1 + Len(s1), Len(v3) - n1) ′возвращает слово после поисковой строки
v3 = v2 ′склейка
n1 = InStr(1, v3, s1) ′выполняем новый поиск подстроки
i = i + 1
Loop Until n1 < 1 Or i >= numpos ′если такой подстроки нет, то обрываем поиск
End If
If n1 < 1 And i < numpos Then
ExpandStr = v2
Else
ExpandStr = v1
End If
End Function
попробуй -"точка "как разделитель. | |
|
| |
|
23 Кб. |
|
| или вот ещё
это osmor совет давал
запусти запрос.
где то тут на форуме есть подробно е описание | |
|
| |
|
|
|
| нужно посмотреть конкретный текс
скорее всего перенос строки или
Chr(13) & Chr(10)
или
один из символов
Разделение на поля см.в файл который дал час | |
|
| |
|
|
|
| Всем большое и огромное спасибо что не бросили человека с больной головой и помогли, особенно Анатолию (киев). Возможно, код и не идеал есть множество пробелов в нем но в связи с тем что базы была еще не очень большая около 3000 записей конвертация произошла почти автоматически процентов на 90 потом пришлось конечно ручками подчистить базу от ляпов например как "Справка от нотариуса № 300 от 10.10.2003 г." программа посчитала что первая идет дата "нотариуса" а потом № "300 от 10.10.2003 г." но конечно таких записей было не очень много
Вот код если кому нужен.
Dim rst As DAO.Recordset
Dim rst1 As DAO.Recordset
Dim pm, l As Long
Dim ot, nn As Integer
Dim zn1, zn2, zn3, zn0 As Variant
Dim v As Variant, i As Long
Set rst = CurrentDb.OpenRecordset("SELECT Базаданых.* FROM Базаданых WHERE (((Базаданых.влд1) Is Not Null))")
Set rst1 = CurrentDb.OpenRecordset("SELECT * FROM [Вложенные документы]")
If Not rst.EOF Then
rst.MoveLast
pm = rst.RecordCount
End If
rst.MoveFirst
For l = 1 To pm
With rst
v = ![влд1]
zn0 = ![сч]
v = Split(v, vbCrLf)
For i = 0 To UBound(v)
nn = InStr(1, v(i), "№")
ot = InStr(1, v(i), "от")
If nn <> 0 And ot <> 0 Then
zn1 = Left(v(i), nn - 1)
zn2 = Mid(v(i), nn + 1, ot - nn - 1)
zn3 = Mid(v(i), ot + 2)
ElseIf nn = 0 And ot <> 0 Then
zn1 = Left(v(i), ot - 1)
zn2 = Null
zn3 = Mid(v(i), ot + 2)
ElseIf nn <> 0 And ot = 0 Then
zn1 = Left(v(i), nn - 1)
zn2 = Mid(v(i), nn + 1)
zn3 = Null
ElseIf nn = 0 And ot = 0 Then
zn1 = v(i)
zn2 = Null
zn3 = Null
End If
With rst1
.AddNew
.Fields!кодБД = zn0
.Fields!ВлДок = zn1
.Fields!номер = zn2
.Fields!дата = zn3
.Fields!коллистов = 1
.Update
End With
Next
.MoveNext
End With
Next l | |
|
| |