napisał: jalamas postów: 316
umieszczony: 9 lutego 2007 07:57
edytowany: 9 lutego 2007 08:03
|
|
Cytat:
nikt tak nie robi
to sie posypie
Trudno dyskutować z takimi argumentami, bo 1-szy nie jest prawdą, a 2-gi nie jest argumentem.
Nie można dać takiej gwarancji, jak nie można powiedzieć człowiekowi, że jego cudowne audi się nie zepsuje...
Sam Excel jest przystosowany do pracy z SQL, że tak symbolicznie napiszę, patrz QueryTables, oraz XLODBC.XLA.
Wystarczy wykonać Query do FireBird nagrywając makro i podejrzeć kod, co widzimy,
gdy się w niego wpatrzymy co widzimy ..... ?
Akurat a nie bardzo kocham QueryTables wolę bezpośrednio ADO.
Jedynie bug Billa utrudnia pracę, bo nie można tegoż zastosować do otwartego skoroszytu czy skoroszytu z hasłem.
Wspomnę o takich hasłach w Excelu jak:
- importuj dane
- kwerenda bazy danych
czy samo Microsoft Query.
Jedynie można byłoby z prostych rozwiązań rozpatrzyć sprawę stosowania zamiast Firebird, bazy danych Access (same tabele+ uprawnienia) lecz to raczej jedynie w sieci lokalnej.
No i nie znam Firebirda, jak już wspomniałam, nie wczytywałam się, lecz zapewne ma on lepszy system zabezpieczeń niż Acc.
Lecz skoro umiałeś napisać aplikację współpracującą z FireBird,
to dla ćwiczenia przełożenie na ACC ( w celach porónawczych) jest bardzo proste.
Lecz nie wiem czy warto.
Trudno mi tutaj ferować wyroki (jak tym innym), mogę powiedzieć, że najpoważniejszym argumentem "za" Twojej aplikacji jest to, że ONA CHODZI I JEST UŻYTECZNA.
I to słowo chodzi w mojej firmie i moim środowisku jest najważniejsze.
Bo zawsze można daną aplikację napisać lepiej inaczej,
i taka jest kolej rzeczy dla prawie każdej z nich,
zazwyczaj sami to robimy, lecz czas i forsa...
A co do "kobietą", to dodatkowo nie tylko inni, lecz praktycznie każdy facet ma prawo podważać moje racje,
więc tego udowadniania mam trochę więcej,
lecz ćwiczenie czyni mistrza .... |
|
napisał: erawis postów: 9
umieszczony: 8 lutego 2007 20:55
|
|
Dlaczego Firebird ? - bo darmowy i troche go znam.
Moja aplikacja pracuje naprawdę (sam jestem zdziwiony) bardzo stabilnie.
Inne narzędzia ? Tak ale dodatkowy koszt który wolę ja zainkasować niż wydać na oprogramowanie, pozatym wymyśliłem sobie takie coś :
Firma posiada ogromne ilości plików xls, (niektóre to formularze, inne to pliki z danymi) wystarczy wczytać do bazy :
- formuły
- formatowanie arkusza / czcionki, szerokości kolumn itp/
Wystarczy później dać userowi możliwość wyboru : na którym formularzu chce pracować i wczytać mu go.
I to zaczyna działać.
Ale pojawili się ONI z argumentem :
- nikt tak nie robi
- to sie posypie
A ja nie mam kontrargumentów.
A co do "jesteśmy kobietą" to ;) |
|
napisał: jalamas postów: 316
umieszczony: 8 lutego 2007 20:25
edytowany: 8 lutego 2007 20:34
|
|
Uzasadnij dlaczego Firebird ?
znajomi - to znamy "jeteśmy kobietą", mamy nawet gorzej....
Każda 1-sza aplikacja (i nie tylko 1-sza , 1-sza nas tylko płoszy w takiej sytuacji ) się wysypuje.
A w ogóle nawet Bill musi dawać poprawki... 
Trzeba zrobić taką obsługę błędów z logami, by wiedzieć z jakiej procedury i może u jakiego usera i kiedy i jaki błąd...
To raczej standard, ale myślę, że to przewidziałeś ?
Zwykle człowiek mialby ochotę powiedzieć tym ludziom zróbcie to lepiej, lecz ...
Możę dobrze byłoby bardzo grzecznie zapytać szefa o argumenty tych ludzia, ale nie namawiam... nie znam układów, wsio ma swoje granice czyż nie ?
Być moze oni mają swoich znajomych i oni chceliby zarobić, to jest częsta przyczyna... |
|
napisał: erawis postów: 9
umieszczony: 8 lutego 2007 20:19
|
|
Cytat:Nie rozumiem co znaczy "poważnych", ale na przykład do pobrania danych do Excela
- z tabel baz danych,
- plików tekstowych,
- czy innych plików Excela....
tam gdzie nie wymaga to i nie ma potrzeby pisac aplikacji.
Jeśli sceptycznie się zapatrują może powinni Ci polecić napisanie całej aplikacji w innym narzędziu...
Przede wszystkim nalezy określić cel i stosownie do tego wybrac narzędzie.
No i trzeba brać pod uwagę możliwości i wiedzę progamisty (czy zespołu) oraz posiadane licencje na narzędzia......
Lub zmianę programisty .... jeśli nie potrafi..
Celu raczej nie podałeś ....
Fajnie,
Trafiłem do poważnej firmy gdzie podstawowym narzędziem jest EXCEL.
Ilość plików jest ogromna....
Taki za..prz że ludzie z pustymi taczkami biegają.
Napisałem aplikacje VBA + Excel + Firebird - Tworzenie kart technologicznych na produkcje pewnego wyrobu z rysunkami technicznymi, pdf i takie tam, i działa od 3 m-cy bez zarzutu.
Ale w firmie pojawili się ludzie tzw. "guru/znajomi szefa" z opinią to sie wysypie.
W moim kręgu na słowa : SQL, EXCEL, VBa - każdy się poddaje.
Szukam więc argumentów ZA |
|
napisał: jalamas postów: 316
umieszczony: 8 lutego 2007 19:50
edytowany: 8 lutego 2007 19:55
|
|
Nie rozumiem co znaczy "poważnych", ale na przykład do pobrania danych do Excela
- z tabel baz danych,
- plików tekstowych,
- czy innych plików Excela....
tam gdzie nie wymaga to i nie ma potrzeby pisac aplikacji.
Jeśli sceptycznie się zapatrują może powinni Ci polecić napisanie całej aplikacji w innym narzędziu...
Przede wszystkim nalezy określić cel i stosownie do tego wybrac narzędzie.
No i trzeba brać pod uwagę możliwości i wiedzę progamisty (czy zespołu) oraz posiadane licencje na narzędzia......
Lub zmianę programisty .... jeśli nie potrafi.. 
Celu raczej nie podałeś .... |
|
napisał: erawis postów: 9
umieszczony: 8 lutego 2007 19:24
|
|
Witam
Dziękuje jamalas. O to mi chodziło.
A swoją drogą : do jakich "poważnych" zadań stosujecie SQL + VBA/Excel ?
Pytam bo zaprzyjeźnieni "guru" mojego szefa sceptycznie opiniują taki układ.
Pozdrawiam. |
|
napisał: jalamas postów: 316
umieszczony: 4 lutego 2007 23:15
edytowany: 4 lutego 2007 23:17
|
|
Z tą karencją to dobry pomysł, jeśli nie ma innej metody, chociaż ja bym wysyłała z mniejszym opóźnieniem,
a poprawionych po tym czasie już nie. |
|
napisał: admin postów: 613
umieszczony: 4 lutego 2007 22:36
|
|
Cytat:
Panie Adminie, co z tego, że można edytować posty skoro i tak poprzedni śmietnik rozsyłasz....
Pani jamalas!
Nie ja rozsyłam, tylko Pan mailer rozsyła, to co dostanie w swoje łapki.
Jak dostaje jednego posta od Pani to wysyła. Jak post Pani poprawia to wysyła. Psotnik.
Chyba będę musiał wprowadzić na przykład 1-godzinną karencję na wysyłkę maili.
Hm. Pozdrawiam. |
|
napisał: jalamas postów: 316
umieszczony: 4 lutego 2007 20:16
edytowany: 4 lutego 2007 20:54
|
|
Piszę to celowo w innym poście.
W bazie danych nie powinno się przechowywać obrazków itp...
Jedynie linki... i to względne...
Proszę poczytać opinie na sieci...
Panie Adminie, co z tego, że można edytować posty skoro i tak poprzedni śmietnik rozsyłasz.... |
|
napisał: jalamas postów: 316
umieszczony: 4 lutego 2007 20:06
edytowany: 4 lutego 2007 20:13
|
|
Nie znam FireBirda, lecz zainstalowałam sobie server w wersji 1.5, oraz IBOConsole, jeśli masz info o lepszym podaj...
- tabela
CREATE TABLE "tblmoja"
(
"id_cos" INTEGER NOT NULL,
"plik_nazwa" VARCHAR(254),
"plik_size" INTEGER,
"plik_blob" BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
CONSTRAINT "PK_tblmoja" PRIMARY KEY ("id_cos")
);
- mojeID, szukam max, bo nie wiem jak jest autoincrement w Firebird, generator chyba trzeba ?
- chodzi dla jpg i bmp
- BEZ DSN, bo nie lubię mieć związanych rąk
- do fRD trzeba taką obsługę błędów jak fncWriteBLOB (Close handle do pliku ...) zapomniałam.
Public Const BlockSize = 32768 'This size can be experimented with for performance and reliability.
'http://support.microsoft.com/kb/q185958/
'http://www.borland.pl/tech/interbase.shtml
Sub FireBlobTest1()
' bmp jpg
On Error GoTo FireBlobTest_Error
Dim arrBmp() As Byte
Dim Conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim lngSize As Long
Dim strSql As String
Set Conn = New ADODB.Connection
Conn.ConnectionString = "DRIVER={Firebird/Interbase(r) Driver};" _
& "DBNAME=localhost:" _
& MojaBaza & ";" _
& "UID=" & MyUID _
& ";PWD=" & MyPWD
Conn.CursorLocation = adUseClient
Conn.Open
Set rs = New ADODB.Recordset
' zapis z pliku na dysku
strSql = "SELECT * FROM ""tblmoja"" WHERE 1=0"
With rs
.Open strSql, Conn, adOpenStatic, adLockOptimistic
.AddNew
.Fields("id_cos") = mojeID
.Fields("plik_nazwa") = MyFileName
.Update
lngSize = fRD(MyBmp, rs, "plik_blob")
.Fields("plik_size") = lngSize
.Update
End With
rs.Close
' odczyt to tmp plik
rs.Open "Select * from ""tblmoja"" WHERE ""id_cos"" =" & CStr(mojeID), Conn
Call fncWriteBLOB(rs, "plik_blob", MyTmpFile)
rs.Close
With ThisWorkbook.Worksheets("moj_arkusz")
.OLEObjects("MojImage").Object.Picture = LoadPicture(MyTmpFile)
End With
FireBlobTest_Exit:
On Error Resume Next
Conn.Close
Set Conn = Nothing
Exit Sub
FireBlobTest_Error:
MsgBox "Błąd - " & Err.Number & vbCrLf & _
"Opis - " & Err.Description & vbCrLf & _
"Procedura - " & "FireBlobTest", vbExclamation
Debug.Print Err.Description
Resume FireBlobTest_Exit
End Sub
Function fncWriteBLOB(rstTable As ADODB.Recordset, _
ByVal strField As String, _
ByVal strDestination As String)
Dim intNumBlocks As Integer
Dim intDestFile As Integer
Dim intI As Integer
Dim lngFileLength As Long
Dim lngLeftOver As Long
Dim strFileData As String
On Error GoTo FncWriteBLOB_Error
lngFileLength = rstTable(strField).ActualSize
If lngFileLength = 0 Then
fncWriteBLOB = 0
Exit Function
End If
intNumBlocks = lngFileLength \ BlockSize
lngLeftOver = lngFileLength Mod BlockSize
intDestFile = FreeFile
Open strDestination For Output As intDestFile
Close intDestFile
Open strDestination For Binary As intDestFile
strFileData = rstTable(strField).GetChunk(lngLeftOver)
Put intDestFile, , strFileData
For intI = 1 To intNumBlocks
strFileData = rstTable(strField).GetChunk((intI - 1) * _
BlockSize + lngLeftOver) & ""
Put intDestFile, , strFileData
Next intI
FncWriteBLOB_Exit:
On Error Resume Next
Close intDestFile
fncWriteBLOB = lngFileLength
Exit Function
FncWriteBLOB_Error:
MsgBox "Błąd - " & Err.Number & vbCrLf & _
"Opis - " & Err.Description & vbCrLf & _
"Procedura - " & "FncWriteBLOB", vbExclamation
Resume FncWriteBLOB_Exit
End Function
Function fRD(ByVal PicBmpJpg As String, _
rs As ADODB.Recordset, _
ByVal sFld As String) As Long
Dim lngFileLength As Long
Dim lngBlocks As Long
Dim LeftOver As Long
Dim i As Long
Dim ByteData() As Byte
Dim SourceFile As Integer
SourceFile = FreeFile
Open PicBmpJpg For Binary Access Read As SourceFile
lngFileLength = LOF(SourceFile) ' Get the length of the file.
Debug.Print "Filelength is " & lngFileLength
If lngFileLength = 0 Then
Close SourceFile
MsgBox PicBmpJpg & " empty or not found."
Exit Function
Else
lngBlocks = lngFileLength / BlockSize
LeftOver = lngFileLength Mod BlockSize
ReDim ByteData(LeftOver)
Get SourceFile, , ByteData()
rs.Fields(sFld).AppendChunk ByteData()
ReDim ByteData(BlockSize)
For i = 1 To lngBlocks
Get SourceFile, , ByteData()
rs.Fields(sFld).AppendChunk ByteData()
Next i
rs.Update
Close SourceFile
End If
fRD = lngFileLength
End Function
To wszystko trzeba byłoby tak naprawdę z późnym wiązaniem +CreateObject,
bez referencji, a tylko wersję ADO na kompie sprawdzać.
Sorry ale to:
Dim conn As Connection
Dim rs As Recordset
Set conn = New Connection
bez prefixów ADODB to nie jest OK !
Obudzisz sie z ręka w nocniku.... |
|
napisał: admin postów: 613
umieszczony: 4 lutego 2007 09:47
|
|
Co trzymasz w BLOBie? Tekst czy plik? Jaki plik? |
|
napisał: erawis postów: 9
umieszczony: 3 lutego 2007 20:32
|
|
Ja dalej trzymam sie FB 1.5
Ale Jak Z Tym Typem ?
tzn. Jak wczytać bloba ?
Na mojego czuja to ładuje bloba pod zmienną typu ....
???? |
|
napisał: erawis postów: 9
umieszczony: 3 lutego 2007 20:23
|
|
[quote]Witaj.
[vbcode]
Dim Sql As String
Dim conn As Connection
Dim rs As Recordset
Set conn = New Connection
conn.ConnectionString = "DSN=PROBA"
conn.Open
Sql = "SELECT * FROM BLABLA"
[quote]
Zainstaluj ODBC dla FB.
Wejdz do panelu sterowania i załóż systemowy dsn w sterownikach ODBC.
W parametrach podaj bazę danych, usera i hasło.
nazwij to PRÓBA i spróbuj po mojemu.
Administracja serwisu prosi o poprawienie znaczników [qoute] Administracja serwisu prosi o poprawienie znaczników [vbcode] |
|
napisał: admin postów: 613
umieszczony: 3 lutego 2007 19:37
|
|
Cytat:
FIREBIRDA.
OOOPS! Rzeczywiście.
Znalazłem na sieci to:
conn.ConnectionString = "Driver=Firebird/InterBase(r) driver;UID=SYSDBA;" & _
"PWD=masterkey;DBNAME=C:\Program Files\Firebird\Firebird_2_0\examples\empbuild\EMPLOYEE.FDB;"
..ale nie działa, mimo, że uruchomiłem usługę Firebirda i plik dazy danych istnieje.
Otrzymuję tylko taki komunikat:
[Microsoft][Menedżer sterowników ODBC] Nie można odnaleźć nazwy źródła danych, a nie ma podanego sterownika domyślnego
Pomyślę o tym jutro. |
|
napisał: erawis postów: 9
umieszczony: 3 lutego 2007 19:17
|
|
Cytat: Witamy na liście.
Bardzo ciekawy temat. Chętnie sam mu się przyjrzę, ale napisz mi jak łączysz się z bazą danych z Firefoxa? Jakie argumenty podajesz w do nawiązania połączenia?
FIREBIRDA. |
|
napisał: erawis postów: 9
umieszczony: 3 lutego 2007 17:57
|
|
Witaj.
Dim Sql As String
Dim conn As Connection
Dim rs As Recordset
Set conn = New Connection
conn.ConnectionString = "DSN=PROBA"
conn.Open
Sql = "SELECT * FROM BLABLA"
Set rs = conn.Execute(Sql)
Możliwości są naprawde super.
Z poziomu EXCELA zarządzam całą bazą danych.
W FB trzymam userów których odczytuje w trakcie uruchamiania arkuszy itd, itd
Ale co do mojego problemu :
Prawdopodobnie trzeba załadować bloba do nowej zmiennej jakiegoś filetypu ?
Pomóżcie, bo nie za baredzo znam exla.
pozdrawiam. |
|
napisał: admin postów: 613
umieszczony: 3 lutego 2007 16:47
|
|
Witamy na liście.
Bardzo ciekawy temat. Chętnie sam mu się przyjrzę, ale napisz mi jak łączysz się z bazą danych z Firefoxa? Jakie argumenty podajesz w do nawiązania połączenia? |
|
napisał: erawis postów: 9
umieszczony: 3 lutego 2007 14:07
|
|
Witam po raz pierwszy.
PROBLEM:
jak wczytać z Firebirda i jak pokazać na userformie lub na arkuszu BLOB-a wczytanego z Firebirda ?
pozadrawiam.
Do FB łącze sie przez odbc |
|
 wstecz 1 dalej  wszystkich stron: 1
|
|