Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Функция, запись данных из в поля формы в таблицу. / 25 сообщений из 31, страница 1 из 2
03.03.2017, 22:55
    #39413978
pnnkazan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
Здравствуйте! есть поле в форме вот с такими данными:

49,0840388888889 55,8483944444444
49,0758420621239 55,848868421318
49,0755923105285 55,8510254478631
49,0667690295303 55,8510602052147
49,0669888498878 55,8590267224895
49,072003740708 55,859278497036
49,0740250881726 55,8640417330845
49,0763634133865 55,8644822772042
49,0793085126276 55,8692599425676
49,077035350807 55,8695706214117
49,077118035886 55,8720531362307
49,0839775997428 55,8723909134901
49,085085495203 55,870734780173
49,0957224166008 55,8714768922188
49,1048214234981 55,8679821314794
49,1059956676562 55,8649419488701
49,1078564979425 55,8625470640388
49,1106863940431 55,8613210507663
49,1067536240092 55,8577984634221
49,0985710398202 55,8551910660467
49,0879508739187 55,8479290756276
Данные в поле записаны через знак табуляции и знак абзаца.

Как записать можно данные из поля формы записались в табл1 (2 столбца: X,Y)?
...
Рейтинг: 0 / 0
03.03.2017, 23:36
    #39413983
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
pnnkazanесть поле в форме вот с такими данными

эта куча в одном мемо поле или одна строка - это одна запись в таблице?
однако очень существенно...
...
Рейтинг: 0 / 0
03.03.2017, 23:38
    #39413984
pnnkazan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
vmag, поле MEMO в форме (свободное)
...
Рейтинг: 0 / 0
04.03.2017, 00:39
    #39413990
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
Вангую:
если поле в форме такие данные с клавиатуры не внесешь т.к нажатие TAB или ENTER перемещает в следующее поле
если для постоянного пользования лучше сделать форму на таблице с полями X и Y
если разово то добавить в таблицу поле с данными (ctl),выполнить процедуру и удалить его (если Акцесс ниже 2007 использовать DAO)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub my()
Dim rs As Recordset, a
Set rs = CurrentDb.OpenRecordset("tbl")
Do Until rs.EOF
a = Split(rs!ctl, Chr(32)) 'или другой разделитель
rs.Edit
rs!x = a(0)
rs!y = a(1)
rs.Update
rs.MoveNext
Loop
End Sub
...
Рейтинг: 0 / 0
04.03.2017, 00:42
    #39413992
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
pnnkazanvmag, поле MEMO в форме (свободное)А откуда в свободном поле данные ???
...
Рейтинг: 0 / 0
04.03.2017, 01:18
    #39413998
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
pnnkazan,

Функцию писать было лень...
1. Скопировал в буфер вашу кучу...
2. Сохранил как есть в текстовом файле.
3. В БД внешние данные - связь с таблицами выбрал тип txt и текстовый файл.
В мастере выбрал разделитель Табуляция и определил свойства полей как текстовые, чтоб не потерять разряды (можете еще назвать Х и Y).
В результате ваша связанная искомая таблица...
...
Рейтинг: 0 / 0
04.03.2017, 04:10
    #39414009
pnnkazan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
sdku, vmag, в реале есть файл *.kml в кодировке utf-8, внутри текст:
<?xml version="1.0" encoding="UTF-16"?><kml xmlns=" http://earth.google.com/kml/2.2"><Document xmlns=""><mapName>Казань</mapName><name>1.kmz</name><Style id="Новый многоугольник_Style_00000000"><LabelStyle><color>ff000000</color><scale>1</scale><face>Arial</face><visible>0</visible><style>00000000</style></LabelStyle><LineStyle><color>ff000099</color><width>00000001</width></LineStyle><PolyStyle><color>ff99ffff</color><fill>0</fill><outline>1</outline></PolyStyle><ListStyle/></Style><Placemark id="4"><name>Новый многоугольник</name><visibility>1</visibility><styleUrl>#Новый многоугольник_Style_00000000</styleUrl><Polygon><outerBoundaryIs><LinearRing><coordinates>49.0840388888889,55.8483944444444,0 49.0758420621239,55.848868421318,0 49.0755923105285,55.8510254478631,0 49.0667690295303,55.8510602052147,0 49.0669888498878,55.8590267224895,0 49.072003740708,55.859278497036,0 49.0740250881726,55.8640417330845,0 49.0763634133865,55.8644822772042,0 49.0793085126276,55.8692599425676,0 49.077035350807,55.8695706214117,0 49.077118035886,55.8720531362307,0 49.0839775997428,55.8723909134901,0 49.085085495203,55.870734780173,0 49.0957224166008,55.8714768922188,0 49.1048214234981,55.8679821314794,0 49.1059956676562,55.8649419488701,0 49.1078564979425,55.8625470640388,0 49.1106863940431,55.8613210507663,0 49.1067536240092,55.8577984634221,0 49.0985710398202,55.8551910660467,0 49.0879508739187,55.8479290756276,0</coordinates></LinearRing></outerBoundaryIs></Polygon></Placemark></Document></kml>
Это область с координатами, внутри которой находятся компании, все координаты перечислены по порядку и соединены прямыми линями. По идее было бы хорошо, это: 1. Имортировать файл куда то в буфер. 2. Фильтровать и преобразовать до такого состояния: 49,0840388888889 55,8483944444444
49,0758420621239 55,848868421318
49,0755923105285 55,8510254478631
49,0667690295303 55,8510602052147
49,0669888498878 55,8590267224895
49,072003740708 55,859278497036
49,0740250881726 55,8640417330845
49,0763634133865 55,8644822772042
49,0793085126276 55,8692599425676
49,077035350807 55,8695706214117
49,077118035886 55,8720531362307
49,0839775997428 55,8723909134901
49,085085495203 55,870734780173
49,0957224166008 55,8714768922188
49,1048214234981 55,8679821314794
49,1059956676562 55,8649419488701
49,1078564979425 55,8625470640388
49,1106863940431 55,8613210507663
49,1067536240092 55,8577984634221
49,0985710398202 55,8551910660467
49,0879508739187 55,8479290756276
3. Записать в таблицу

Пока сделал так:
просто открываю файл блокнотом, вставляю в пустое поле формы, нажимаю кнопку, текст преобразуется до этого состояния. А дальше как раз и спрашиваю как записать в таблицу
...
Рейтинг: 0 / 0
04.03.2017, 09:07
    #39414024
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
pnnkazan, а как эти данные будут в дальнейшем использоваться? И много ли будет записей?
Хранить данные нужно так, ИМХО, как они будут использоваться в дальнейшем.
Подобные данные можно хранить как XML в поле мемо или двоичные данные сохранённого массива в поле объекта OLE.
...
Рейтинг: 0 / 0
04.03.2017, 13:02
    #39414069
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
pnnkazan,

Вы бы лучше сам файл пристегнули...
То что вы сюда выкинули не открывается как xml файл ни браузером и вообще ничем как xml...
В старших версиях (2010) любой правильный файл xml пристегивается на ура с разбивкой по таблицам и в соответствии со структурой (см. пример на картинке)...
Если такой возможности нет, ищите в поиске на сайте "импорт xml", но опять же - речь идет об импорте правильного файла...
...
Рейтинг: 0 / 0
04.03.2017, 15:26
    #39414085
pnnkazan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
vmag, Панург, сам файл создается в других географических системах https://ru.wikipedia.org/wiki/KML . Таких файлов каждый месяц может быть десятками. Из этого файла нужны только координаты сектора, которые лучше хранить во временной таблице1. Так же есть база адресов с ID адреса и координатами, и База компаний, где у каждой есть от 0 до n.. адресов с Id адреса.
Задача по сути в следующем:
1. Это загрузить такие файлы в базу.
2. Вытащить из них координаты секторов и название сектором по Name.
3. в отдельной таблице0 создать (Id сектора; Название сектора)
4. Записать во временную таблицу1 строго по порядку координаты (ID координат сектора; Id сектора; координата X; координата Y).
5. Определить Max(X;Y) и Min(X;Y) координаты по каждому сектору.
6. Функцией триангулирования прогнать каждый объект карты (здание) попадающее в диапазон по Max и Min.
7. В таблицу2 записать Id адреса и Id сектора (это будут объекты карты, которые находятся в данном секторе)
8. После записи в таблицу2, таблицу1 можно удалить она больше не нужна.
...
Рейтинг: 0 / 0
04.03.2017, 16:42
    #39414096
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
pnnkazan,
KML (от англ. Keyhole Markup Language — язык разметки Keyhole) — язык разметки на основе XML для представления трёхмерных геопространственных данных в программе «Google Планета Земля» («Keyhole» до её приобретения «Google»).
навряд-ли акцесс что-либо сделает с этим файлом
...
Рейтинг: 0 / 0
04.03.2017, 16:51
    #39414102
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
sdku... навряд-ли акцесс что-либо сделает с этим файлом
Access сделает то, чего мы его попросим,
предварительно научив делать это.

Я вот, например, "попросил" "нарисовать" :)
...
Рейтинг: 0 / 0
04.03.2017, 16:54
    #39414104
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
pnnkazan,

Ну вот теперь файл dok.kml правильный, если сменить расширение на xml - в браузере открывается (см. картинку)...
В общем ищите по форуму "импорт xml" и в путь...
Для бесплатной работы ваше ТЗ крутовато, если со знанием дела, то пол дня - день убить точно придется...
...
Рейтинг: 0 / 0
04.03.2017, 16:59
    #39414105
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
Если не охота разбираться с xml - загоняйте файл в строку, выкусывайте всё что нужно и ...
...
Рейтинг: 0 / 0
04.03.2017, 17:01
    #39414107
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
Predeclared,
"научить" Access рисовать (где-то читал,но никогда не использовал-max вставлял что-то готовое) это вполне реально-а вот работать с файлом имеющим расширение .kml "научить" не удастся
...
Рейтинг: 0 / 0
04.03.2017, 17:24
    #39414114
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
sdku...а вот работать с файлом имеющим расширение .kml "научить" не удастся
Почему это?

Вот научить за пивом Access бегать тяжеловато,
а с файлами работать - вполне реально,
в том числе и с kml.
...
Рейтинг: 0 / 0
04.03.2017, 17:43
    #39414118
pnnkazan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
Нашел вот такой модуль для открытия файлов. Теперь думаю, а можно ли сразу с десяток файлов записать в таблицу с полем memo.

Private Sub Кнопка9_Click()
' Requires reference to Microsoft Office 11.0 Object Library.

Dim fDialog As Office.FileDialog
Dim varFile As Variant

' Clear listbox contents.
'Me.FileList.RowSource = ""

' Set up the File Dialog.
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

With fDialog

' Allow user to make multiple selections in dialog box
.AllowMultiSelect = True

' Set the title of the dialog box.
.Title = "Выберете файлы границ секторов для импорта"

' Clear out the current filters, and add our own.
.Filters.Clear
.Filters.Add "Keyhole Markup Language", "*.KML"

' Show the dialog box. If the .Show method returns True, the
' user picked at least one file. If the .Show method returns
' False, the user clicked Cancel.
If .Show = True Then

'Loop through each file selected and add it to our list box.
For Each varFile In .SelectedItems
'Me.FileList.AddItem varFile
Next

Else
'MsgBox "You clicked Cancel in the file dialog box."
End If
End With
End Sub
...
Рейтинг: 0 / 0
06.03.2017, 15:30
    #39414807
pnnkazan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
sdkuВангую:
если поле в форме такие данные с клавиатуры не внесешь т.к нажатие TAB или ENTER перемещает в следующее поле
если для постоянного пользования лучше сделать форму на таблице с полями X и Y
если разово то добавить в таблицу поле с данными (ctl),выполнить процедуру и удалить его (если Акцесс ниже 2007 использовать DAO)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub my()
Dim rs As Recordset, a
Set rs = CurrentDb.OpenRecordset("tbl")
Do Until rs.EOF
a = Split(rs!ctl, Chr(32)) 'или другой разделитель
rs.Edit
rs!x = a(0)
rs!y = a(1)
rs.Update
rs.MoveNext
Loop
End Sub



Сделал в итоге импорт файлов kml, в конечном счете запросом выдергивается данные, и имееют вид как в приложенной картинке.
Сами данные:
49,0840388888889:55,8483944444444;49,0758420616469:55,8488684256352;49,0755923100512:55,8510254521809;49,0667690290435:55,8510602095323;49,066988849401:55,8590267268095;49,0720037402266:55,8592785013562;49,0740250876933:55,8640417374062;49,0763634129097:55,8644822815261;49,0793085121538:55,869259946891;49,0770353503307:55,8695706257352;49,0771180354098:55,8720531405549;49,0839775992738:55,8723909178146;49,0850854947352:55,870734784497;49,0957224161439:55,8714768965433;49,1048214230504:55,867982135803;49,1059956672097:55,8649419531928;49,1078564974979:55,8625470683608;49,1106863936013:55,861321055088;49,1067536235636:55,8577984677427;49,0985710393666:55,8551910703663;49,0879508734545:55,8479290799447


Теперь вопрос, как можно записать данные в таблицу, что бы они имели вид?
Id IdSector X Y
1 1 49,08403889 55,84839444
2 1 49,07584206 55,84886843
3 1 49,07559231 55,85102545
4 1 49,06676903 55,85106021
5 1 49,06698885 55,85902673
6 1 49,07200374 55,8592785
7 1 49,07402509 55,86404174
8 1 49,07636341 55,86448228
9 1 49,07930851 55,86925995
10 1 49,07703535 55,86957063
11 1 49,07711804 55,87205314
12 1 49,0839776 55,87239092
13 1 49,08508549 55,87073478
14 1 49,09572242 55,8714769
15 1 49,10482142 55,86798214
16 1 49,10599567 55,86494195
17 1 49,1078565 55,86254707
18 1 49,11068639 55,86132106
19 1 49,10675362 55,85779847
20 1 49,09857104 55,85519107
21 1 49,08795087 55,84792908
...
Рейтинг: 0 / 0
06.03.2017, 15:48
    #39414825
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
pnnkazanТеперь вопрос, как можно записать данные в таблицу, что бы они имели вид?Зачем? Ты же данные всёодно похеришь потом. Создай массив и работай с ним.
...
Рейтинг: 0 / 0
06.03.2017, 15:58
    #39414833
pnnkazan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
ПанургpnnkazanТеперь вопрос, как можно записать данные в таблицу, что бы они имели вид?Зачем? Ты же данные всёодно похеришь потом. Создай массив и работай с ним.

Сейчас VBA слабая сторона, может подскажете как задать массив из запроса?
...
Рейтинг: 0 / 0
06.03.2017, 16:12
    #39414849
Функция, запись данных из в поля формы в таблицу.
Коллега sdku вам уже дал направление. Открываете 1-й Recordset на своем запросе, а 2-й на таблице-получателе. Функцией Split с разделителем ";" получаете массив из пар значений, а Split с разделителем ":" для каждой пары получаете массив из 2-х отдельных значений. Все это и записываете во 2-й Recordset.
Если поля X и Y - числовые, то их тип должен быть Decimal. Кроме того, если в вашей системе десятичный разделитель - ",", то понадобится преобразование в числах "." на ",".
...
Рейтинг: 0 / 0
06.03.2017, 16:30
    #39414863
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
pnnkazanСейчас VBA слабая сторона, может подскажете как задать массив из запроса?Ты же собрался
pnnkazanФункцией триангулирования прогнать каждый объект карты (здание) попадающее в диапазон по Max и Min.Вот передавай туда строку из мемо поля, разбивай сплитом, а пары координат точек (чет-нечет) обрабатывай. Тип хватит и Double - координаты избыточны.

Смысла переводить в рекордсет не вижу вообще.
...
Рейтинг: 0 / 0
07.03.2017, 00:11
    #39415100
pnnkazan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
2 проблемы:
1. Вылетает ошибка в строке rs2.X = Str(b(0)) - Method or data member not found
2. Если убрать rs2.X = Str(b(0)) и rs2.Y = Str(b(1)), и туда вставить rs2.С = a(i), то вроде записывается в тбл TSC в столбец С, но не всё, а в сумме по всему столбцу 247 символов, т.е. массив 'a' имеет в сумме максимум 247 символов.

В таблице TSC типы полей X,Y - одинарные с плавающей точкой, С - длинный текст, в таблице CRMTSCF поле CS - длинный текст.

Код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub my()
Dim rs1 As Recordset, a
Dim rs2 As Recordset, b
Set rs1 = CurrentDb.OpenRecordset("CRMTSCF")
Set rs2 = CurrentDb.OpenRecordset("TSC")
a = Split(rs1!CS, ";")
For i = LBound(a) To UBound(a)
b = Split(a(i), ":")
rs2.AddNew
rs2.X = Str(b(0))
rs2.Y = Str(b(1))
rs2.Update
Next i
End Sub



Подскажите пожалуйста, что не так?
...
Рейтинг: 0 / 0
07.03.2017, 00:16
    #39415103
pnnkazan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
Вот такой список выдает:
49,0840388888889:55,8483944444444
49,0758420616469:55,8488684256352
49,0755923100512:55,8510254521809
49,0667690290435:55,8510602095323
49,066988849401:55,8590267268095
49,0720037402266:55,8592785013562
49,0740250876933:55,8640417374062
49,0763634129097:5
...
Рейтинг: 0 / 0
07.03.2017, 00:24
    #39415109
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, запись данных из в поля формы в таблицу.
pnnkazan,
Выдержка из HELP:"Функция Split(Expression) возвращает одномерный массив с типом данных Variant (String) "
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Функция, запись данных из в поля формы в таблицу. / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]