*.mdb

2 отговора 129 прегледа
#1

*.mdb

Molia Pomognete ! Kak moga da izvadia fail (*.mp3) ot *.mdb file s OLE kontrola?
Probvah tozi nachin :

Open "FileName" for output as 1
Ole1.SaveToFile 1
Close 1

Moeto prilojenie izvajda faila, no kogato go startiram s nqkoi Player mi izpisva "Invalid File Type".Probvah da vkaram v bazata *.txt File no poluchenia fail e s promeneno sudurjanie !!!
Ima li drug metod za izkarvane na Fail ot akseska baza danni ?

Отговор
в отговор на VBT #2

Re: *.mdb

Здрасти, пич,

Направих си една таблица - "Music" с 3 колонки, в аксесовска БД:
ID - за първичен ключ
Name - тип стринг - за името на песента
File - тип OLE Object - за файла.

След което използвам следните 2 функции, съответно за запис на файл в БД и за извличането му от нея:


Private Function SaveFileToDB(ByRef TargetField As ADODB.Field, ByVal FileName As String) As Boolean

Dim intFileNumber As Integer
Dim lngFileLength As Long
Dim arrBytes() As Byte

On Error GoTo SaveFileToDBErr

If Dir(FileName) = "" Then Exit Function
intFileNumber = FreeFile
Open FileName For Binary Access Read As #intFileNumber
lngFileLength = LOF(intFileNumber)
ReDim arrBytes(lngFileLength)
Get #intFileNumber, , arrBytes()
TargetField.AppendChunk arrBytes()
Close #intFileNumber
SaveFileToDB = True

SaveFileToDBErr:
End Function

Private Function LoadFileFromDB(ByRef SourceField As ADODB.Field, FileName As String) As Boolean
Dim intFileNumber As Integer
Dim lngFileLength As Long
Dim arrBytes() As Byte

On Error GoTo LoadFileFromDBErr

intFileNumber = FreeFile
Open FileName For Binary As #intFileNumber
lngFileLength = LenB(SourceField)
arrBytes = SourceField.GetChunk(lngFileLength)
Put #intFileNumber, , arrBytes()
Close #intFileNumber
LoadFileFromDB = True

LoadFileFromDBErr:
End Function


В променливите SourceField и TargetField се задава полето от текущият ред, където се намира курсора(в моят случай rst!File), а в FileName името на файла.

Не забравяй след извикването на функцията SaveFileToDB да направиш ъпдейт на рекордсета. Както и ако добавяш нова песен да направиш предварително AddNew.

А пък за функцията LoadFileFromDB трябва предварително да си позиционирал курсора, за да извлечеш необходимата песен. Тук варианти има много. Може пък да направиш и WHERE клауза в SELECT-а при отварянето на рекордсета, така че да ти извади само точно определена песен.

И накрая искам само да кажа, че тези функции не са само за MP3 файлове, а по принцип за всякакви.

Успех от мен!

Бии, за да те уважават!

Редактирано от Щиpлиц на

Отговор
в отговор на пpoГЪPMИcт #3

Re: *.mdb

Mnogo sum ti blagodaren !!!! Shte opitam tozi metod. Ne znaeh kak se izpolzva funkciata "Open FileName For BINARY Access". Do sega izpolzvah samo
"Open FileName for OutPut " .Oshte vednaj BLAGODARIA !!!

Отговор