|
|
Strona 1 z 1
|
[ Posty: 7 ] |
|
Autor |
Wiadomość |
wald10
Rejestracja: 2008-06-30, 18:06 Posty: 25
|
Automatyczny wybór firmy
Witam wszystkich,
Mam dwie firmy w Symfonii. Za każdym razem otwierając muszę wybrać, którą chcę otworzyć. Czy istnieje taka możliwość, aby wybór firmy następował automatycznie na podstawie dwóch ikonek. Tzn. Mam ikonkę nazwaną : Firma1, i drugą nazwaną Firma2. Jeżeli kliknę Firma1 to w okienku wyboru firmy pojawia się Firma1 jeżeli kliknę ikonkę Firma2 to pojawia się Firma2. Czy to jest możliwe?
|
2008-06-30, 18:15 |
|
|
Autor |
Wiadomość |
Mix-soft.pl
|
|
|
barnie
Ekspert
Rejestracja: 2008-04-07, 13:26 Posty: 208 Pomógł: 2
|
nie wydaje mi się, żeby wybór jednej z 2 firm był duzym problemem. Ale rzeczywiście wybór już z bardziej rozbudowanej listy może okazać się uciążliwy.
Na Pulpicie zrób nowy plik o nazwie takiej jak ma jedna z firm. Rozszerzenie tego pliku zrób VBS. Wklej do niego to : Kod: Function ReadIni( myFilePath, mySection, myKey ) ' This function returns a value read from an INI file ' ' Arguments: ' myFilePath [string] the (path and) file name of the INI file ' mySection [string] the section in the INI file to be searched ' myKey [string] the key whose value is to be returned ' ' Returns: ' the [string] value for the specified key in the specified section ' ' CAVEAT: Will return a space if key exists but value is blank ' ' Written by Keith Lacelle ' Modified by Denis St-Pierre and Rob van der Woude
Const ForReading = 1 Const ForWriting = 2 Const ForAppending = 8
Dim intEqualPos Dim objFSO, objIniFile Dim strFilePath, strKey, strLeftString, strLine, strSection
Set objFSO = CreateObject( "Scripting.FileSystemObject" )
ReadIni = "" strFilePath = Trim( myFilePath ) strSection = Trim( mySection ) strKey = Trim( myKey )
If objFSO.FileExists( strFilePath ) Then Set objIniFile = objFSO.OpenTextFile( strFilePath, ForReading, False ) Do While objIniFile.AtEndOfStream = False strLine = Trim( objIniFile.ReadLine )
' Check if section is found in the current line If LCase( strLine ) = "[" & LCase( strSection ) & "]" Then strLine = Trim( objIniFile.ReadLine )
' Parse lines until the next section is reached Do While Left( strLine, 1 ) <> "[" ' Find position of equal sign in the line intEqualPos = InStr( 1, strLine, "=", 1 ) If intEqualPos > 0 Then strLeftString = Trim( Left( strLine, intEqualPos - 1 ) ) ' Check if item is found in the current line If LCase( strLeftString ) = LCase( strKey ) Then ReadIni = Trim( Mid( strLine, intEqualPos + 1 ) ) ' In case the item exists but value is blank If ReadIni = "" Then ReadIni = " " End If ' Abort loop when item is found Exit Do End If End If
' Abort if the end of the INI file is reached If objIniFile.AtEndOfStream Then Exit Do
' Continue with next line strLine = Trim( objIniFile.ReadLine ) Loop Exit Do End If Loop objIniFile.Close Else WScript.Echo strFilePath & " doesn't exists. Exiting..." Wscript.Quit 1 End If End Function
Sub WriteIni( myFilePath, mySection, myKey, myValue ) ' This subroutine writes a value to an INI file ' ' Arguments: ' myFilePath [string] the (path and) file name of the INI file ' mySection [string] the section in the INI file to be searched ' myKey [string] the key whose value is to be written ' myValue [string] the value to be written (myKey will be ' deleted if myValue is <DELETE_THIS_VALUE>) ' ' Returns: ' N/A ' ' CAVEAT: WriteIni function needs ReadIni function to run ' ' Written by Keith Lacelle ' Modified by Denis St-Pierre, Johan Pol and Rob van der Woude
Const ForReading = 1 Const ForWriting = 2 Const ForAppending = 8
Dim blnInSection, blnKeyExists, blnSectionExists, blnWritten Dim intEqualPos Dim objFSO, objNewIni, objOrgIni, wshShell Dim strFilePath, strFolderPath, strKey, strLeftString Dim strLine, strSection, strTempDir, strTempFile, strValue
strFilePath = Trim( myFilePath ) strSection = Trim( mySection ) strKey = Trim( myKey ) strValue = Trim( myValue )
Set objFSO = CreateObject( "Scripting.FileSystemObject" ) Set wshShell = CreateObject( "WScript.Shell" )
strTempDir = wshShell.ExpandEnvironmentStrings( "%TEMP%" ) strTempFile = objFSO.BuildPath( strTempDir, objFSO.GetTempName )
Set objOrgIni = objFSO.OpenTextFile( strFilePath, ForReading, True ) Set objNewIni = objFSO.CreateTextFile( strTempFile, False, False )
blnInSection = False blnSectionExists = False ' Check if the specified key already exists blnKeyExists = ( ReadIni( strFilePath, strSection, strKey ) <> "" ) blnWritten = False
' Check if path to INI file exists, quit if not strFolderPath = Mid( strFilePath, 1, InStrRev( strFilePath, "\" ) ) If Not objFSO.FolderExists ( strFolderPath ) Then WScript.Echo "Error: WriteIni failed, folder path (" _ & strFolderPath & ") to ini file " _ & strFilePath & " not found!" Set objOrgIni = Nothing Set objNewIni = Nothing Set objFSO = Nothing WScript.Quit 1 End If
While objOrgIni.AtEndOfStream = False strLine = Trim( objOrgIni.ReadLine ) If blnWritten = False Then If LCase( strLine ) = "[" & LCase( strSection ) & "]" Then blnSectionExists = True blnInSection = True ElseIf InStr( strLine, "[" ) = 1 Then blnInSection = False End If End If
If blnInSection Then If blnKeyExists Then intEqualPos = InStr( 1, strLine, "=", vbTextCompare ) If intEqualPos > 0 Then strLeftString = Trim( Left( strLine, intEqualPos - 1 ) ) If LCase( strLeftString ) = LCase( strKey ) Then ' Only write the key if the value isn't empty ' Modification by Johan Pol If strValue <> "<DELETE_THIS_VALUE>" Then objNewIni.WriteLine strKey & "=" & strValue End If blnWritten = True blnInSection = False End If End If If Not blnWritten Then objNewIni.WriteLine strLine End If Else objNewIni.WriteLine strLine ' Only write the key if the value isn't empty ' Modification by Johan Pol If strValue <> "<DELETE_THIS_VALUE>" Then objNewIni.WriteLine strKey & "=" & strValue End If blnWritten = True blnInSection = False End If Else objNewIni.WriteLine strLine End If Wend
If blnSectionExists = False Then ' section doesn't exist objNewIni.WriteLine objNewIni.WriteLine "[" & strSection & "]" ' Only write the key if the value isn't empty ' Modification by Johan Pol If strValue <> "<DELETE_THIS_VALUE>" Then objNewIni.WriteLine strKey & "=" & strValue End If End If
objOrgIni.Close objNewIni.Close
' Delete old INI file objFSO.DeleteFile strFilePath, True ' Rename new INI file objFSO.MoveFile strTempFile, strFilePath
Set objOrgIni = Nothing Set objNewIni = Nothing Set objFSO = Nothing Set wshShell = Nothing End Sub
WriteIni "c:\windows\amfk.ini", "Lista firm", "firma1", "Pierwsza firma" WriteIni "c:\windows\amfk.ini", "Katalogi firm", "firma1", "c:\symfonia\fk\demo_fk\"
Dim WSHShell Set WSHShell = WScript.CreateObject("WScript.Shell") WSHShell.Run "C:\Symfonia\FK\Amfk.exe"
najważniejsze jest 6 ostatnich linijek 1. Kod: WriteIni "c:\windows\amfk.ini", "Lista firm", "firma1", "Pierwsza firma" gdzie "Pierwsz firma to skrót firmy która ma zostać zaproponowana jako pierwsza na liście" 2. Kod: WriteIni "c:\windows\amfk.ini", "Katalogi firm", "firma1", "c:\symfonia\fk\demo_fk\" gdzie "c:\symfonia\fk\demo_fk\" to ścieżka do bazy tej firmy 6. Kod: WSHShell.Run "C:\Symfonia\FK\Amfk.exe"
lokalizacja programu
I tak dla każdej firmy. Prawda, że proste?
|
2008-07-01, 00:03 |
|
|
barnie
Ekspert
Rejestracja: 2008-04-07, 13:26 Posty: 208 Pomógł: 2
|
aha, kod obsługi plików ini w skryptach VBS pochodzi ze strony : http://www.robvanderwoude.com/
|
2008-07-01, 00:05 |
|
|
wald10
Rejestracja: 2008-06-30, 18:06 Posty: 25
|
Dzięki. Działa . Szkoda tylko że to w ten sposób . Przydałoby się, aby programiści umożliwili wybór firmy poprzez parametr w skrócie. Byłoby łatwiej i ikonki programu by się nie zmieniały na ikonki vbs.
|
2008-07-02, 15:27 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
W katalogu bazy danych (PREMIUM) jest plik *.FK
Podczas instalacji sktót plików *.FK przywiązywany jest do aplikacji Symfonia Finanse i Księgowość.
Przy dwukrotnym kliknieciu na taki plik otwierana jest aplikacja Symfonia Finanse i Księgowość. Spodziewałbym się uruchomienia programu w kontekście firmy przez , której plik *.FK został klikniety. Tak się jednak nie dzieje. Program uruchamia się na ostatnio owtwieranej firmie. Uwaga ta zostanie zgłoszona Producentowi i zobaczymy co dalej.
|
2008-07-04, 23:06 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
Wszystko ładnie pięknie - z Premium.
A jak coś takiego zrobić dla Forte?
(tylko proszę nie pisać 'trzeba było zostać przy Premium' ;)
_________________ zz
|
2008-07-25, 09:33 |
|
|
darek.007
Rejestracja: 2007-12-13, 23:19 Posty: 367 Pomógł: 2
|
w Forte plik ini nazywa się:
c:\windows\AmfkSQL.ini
i odpowiednie sekcje troszke inaczej...
|
2008-07-29, 13:40 |
|
|
|
Strona 1 z 1
|
[ Posty: 7 ] |
|
Kto jest online |
Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 33 gości |
|
Nie możesz tworzyć nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników
|
|
|
|