Что нового

[Автоматизация] Как из формы данные в Access файл

StarEdik

Новичок
Сообщения
365
Репутация
4
Версия AutoIt: 3.3.6.1
Описание:
Привет всем.
Есть в папке много(установочных и др.) файлов .Надо сделать базу данных для этих файлов – что за файл ,для чего он ,как использовать и.т.д. Для этого я создал в Access2003 файл FileDataBase.mdb.В нем есть 3 столбца.
1-й «Имя Файла»
2-й «Назначение и Описание»
3-й «Примечание»
Сделал форму ,а в форме кнопка «ОК» и 3 Edit-a с теми же именами что в аксес файле.Тепер я открываю папку выделяю файл .Нажимаю Ф8. Открывается форма ,заполняю Edit –ы в форме .При нажатие на кнопку «ОК» срипт должен занести всё что написано в 3-х Edit-aх в соответствующее столбцы в файле FileDataBase.mdb.И так следующий файл.Как мне этого добиться. Может поможете.
За ранее благодарен :-[

Примечания:
Если можно имя выделенного файла должна заноситься в Edit 1 при открытие формы
Можно вместо FileDataBase.mdb файла FileDataBase.xls
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
StarEdik
чем обусловлен выбор формата хранения базы именно в виде базы MS Access?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
StarEdik [?]
Можно и другой формат.
в таком случае, стоит переформулировать свою задачу. только без воды, четко, что должно получится и в каком виде, как это будет в дальнейшем использоваться? а то можно ведь и в текстовом файле хранить, или в виде листа Excel.
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
Kaster
Kaster сказал(а):
ТХТ файл не подойдет . Пуст будет Excel файл.А для просмотра всего этого придется форму в VBA Excel создавать
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Функцию вставки имени файла взял отсюда
Файл table.xls должен быть создан! (пустой или нет не важно)
Код:
$sFilePath = @ScriptDir & '\table.xls'
If Not FileExists($sFilePath) Then
	MsgBox(262208, 'Ошибка!', 'Файл отсутствует!')
	Exit
EndIf
$oExcel = ObjCreate('Excel.Application') ; создаем объект Excel
If Not IsObj($oExcel) Then
	MsgBox(262208, 'Ошибка!', 'Не удалось запустить Excel!')
	Exit
EndIf

$oExcel.Visible = False ; Excel будет невидим
$oExcel.WorkBooks.Open($sFilePath, Default, False)

HotKeySet('{F11}', '_open_form')
HotKeySet('+{Esc}', '_exit')


$hGui = GUICreate('Файло-описыватель =)', 400, 400)
$hLabel_File = GUICtrlCreateLabel('Имя файла:', 5, 5, 200, 17)
$hInput_File = GUICtrlCreateInput('', 5, 27, 390, 21)
$hLabel_Description = GUICtrlCreateLabel('Описание/назначение файла:', 5, 53, 200, 17)
$hEdit_Description = GUICtrlCreateEdit('', 5, 75, 390, 50)
$hLabel_Note = GUICtrlCreateLabel('Примечание:', 5, 130, 200, 17)
$hEdit_Note = GUICtrlCreateEdit('', 5, 152, 390, 50)
$hButtonInput = GUICtrlCreateButton('Внести данные', 150, 210, 100, 21)
$hButtonCancel = GUICtrlCreateButton('Отмена', 270, 210, 80, 21)


GUISetState(@SW_HIDE)
While 1
	$hMsg = GUIGetMsg()
	Select
		Case $hMsg = $hButtonInput
			With $oExcel.ActiveSheet
				For $i = 1 To 99999
					If .Cells($i, 1).Value = '' Then ; ищем строку, в которой первая ячейка пустая и заполняем ее
						.Cells($i, 1).Value = GUICtrlRead($hInput_File)
						.Cells($i, 2).Value = StringRegExpReplace(GUICtrlRead($hEdit_Description), '\r', '') ; замена переносов
						.Cells($i, 3).Value = StringRegExpReplace(GUICtrlRead($hEdit_Note), '\r', '')
						ExitLoop
					EndIf
				Next
			EndWith
			GUICtrlSetData($hEdit_Description, '') ; сброс значений полей
			GUICtrlSetData($hEdit_Note, '')
			GUISetState(@SW_HIDE) ; прячем GUI
		Case $hMsg = $hButtonCancel Or $hMsg = -3
			GUICtrlSetData($hEdit_Description, '')
			GUICtrlSetData($hEdit_Note, '')
			GUISetState(@SW_HIDE)
	EndSelect
WEnd

Func _open_form()
	$sFileName = _File_Name_Path()
	GUISetState(@SW_SHOW) ; отображаем GUI
	GUICtrlSetData($hInput_File, $sFileName) ; вставка в первое поле имени файла
EndFunc   ;==>_open_form

Func _File_Name_Path()
	Send('{F2}')
	Sleep(500)
	$text = WinGetText('[ACTIVE]', '')
	$array = StringSplit($text, Chr(10))
	If $array[1] = 'FolderView' Then
		$File_Name_Path = @DesktopDir & '\' & $array[UBound($array) - 2]
	Else
		$File_Name_Path = $array[1] & '\' & $array[UBound($array) - 2]
	EndIf
	Return $File_Name_Path
EndFunc   ;==>_File_Name_Path

Func _exit()
	$oExcel.ActiveWorkBook.Save ; сохранение файла
	$oExcel.Application.Quit ; закрытие Excel
	Exit
EndFunc   ;==>_exit
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
Redline
Спасибо.Очень хороший пример


Добавлено:
Сообщение автоматически объединено:

Redline
If $array[1] = 'FolderView' Then
$File_Name_Path = @DesktopDir & '\' & $array[UBound($array) - 2]
Else $File_Name_Path = $array[1] & '\' & $array[UBound($array) - 2]
EndIf
При выборе корневого каталога виден двойной слещ (C:\\1ct.bmp)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
StarEdik,
Добавьте
Код:
;...
If StringRight($array[1], 1) == '\' Then $array[1] = StringTrimRight($array[1], 1)
;...
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
madmasles
благодарю.Добавил.ОК.Спасибо
Redline
Отдельно вам благодарность
 
Верх