Definiranje connection string za bazo, ki je v application d

Dbase, sql, paradox in vse drugo kar se tiče baz.
Odgovori
odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Definiranje connection string za bazo, ki je v application d

Odgovor Napisal/-a odisej » 03.01.2012 14:05:21

Za nek program potrebujem access bazo. Ali ni najbolj primerno mesto application data folder? Ker ne sme biti vezano na userja, ampak za vse userje ista baza. V win7 torej c:\ProgramData\MojProgram\mojabaza.mdb. Verjetno pa ima lahko v kakšni drugi verziji winsov tale folder drugačno ime. In če bi želel sedaj definirati connection string, folderja ProgramData sploh ne vidim. Kdo ve zakaj? Kako se lotiš take stvari.

PeJo
Prispevkov: 988
Pridružen: 08.01.2003 16:10:34

Re: Definiranje connection string za bazo, ki je v applicati

Odgovor Napisal/-a PeJo » 03.01.2012 14:18:02

Kako to misliš, da ga ne vidiš? Sicer je to "skrita" mapa.

sfAllUsersAppData ti vrne za:
Win7 - {Win7 drive}\ProgramData
WinXP - {WinXP drive}\Documents and Settings\All Users\Application Data

Koda: Izberi vse

type
  TSpecialFolder = (sfCurrUserMyDoc, sfAllUsersAppData, sfCurrUserAppData, sfProgFiles, sfAllUsersDoc);

function GetSpecialFolderPath(Folder: TSpecialFolder): string;
const
  SHGFP_TYPE_CURRENT = 0;
var
  path: array [0..MAX_PATH] of Char;
  SF: Integer;
begin
  SF := 0;
  case Folder of
    sfCurrUserMyDoc   : SF := CSIDL_PERSONAL;
    sfAllUsersAppData : SF := CSIDL_COMMON_APPDATA; 
    sfCurrUserAppData : SF := CSIDL_LOCAL_APPDATA;
    sfProgFiles       : SF := CSIDL_PROGRAM_FILES;
    sfAllUsersDoc     : SF := CSIDL_COMMON_DOCUMENTS;
  end;
  if SUCCEEDED(SHGetFolderPath(0, SF, 0, SHGFP_TYPE_CURRENT, @path[0])) then
    Result := path
  else
    Result := '';
end; { GetSpecialFolderPath }
lp

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Re: Definiranje connection string za bazo, ki je v applicati

Odgovor Napisal/-a odisej » 04.01.2012 08:05:54

Mapo v kodi znam dobiti. Sprašujem zato, ker bi seveda v inštalacijo dal tole bazo ini ini, kjer se nahaja connection string. Ker imam sam win7 bo v ini definirano ProgramData. Kaj pa, če namesti kdo z winXP? Lahko bi se sicer igral in v inštalaciji popravil ini, ampak kaj če tega ne naredim. Potem bi uporabnik na xp moral popraviti connection string. Ampak ko bo dal define connection string, ne vidi te mape.

PeJo
Prispevkov: 988
Pridružen: 08.01.2003 16:10:34

Re: Definiranje connection string za bazo, ki je v applicati

Odgovor Napisal/-a PeJo » 04.01.2012 14:32:31

Ne razumem.
Zakaj v ini, če lahko dobiš pot v kodi, ne glede na Win sistem?

lp

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Re: Definiranje connection string za bazo, ki je v applicati

Odgovor Napisal/-a odisej » 04.01.2012 15:21:10

V ini zato, ker lahko uporabnik definira connection string čisto po svoje, za kakšno drugo bazo. Po default pa je ta.

PeJo
Prispevkov: 988
Pridružen: 08.01.2003 16:10:34

Re: Definiranje connection string za bazo, ki je v applicati

Odgovor Napisal/-a PeJo » 04.01.2012 16:14:38

Pa nastavi

Koda: Izberi vse

// INI
[General]
ConnString=
V kodi pa preverjaš če je "ConnString" prazen ga napolniš v kodi drugače pa vzameš tega iz ini-ja


lp

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Re: Definiranje connection string za bazo, ki je v applicati

Odgovor Napisal/-a odisej » 05.01.2012 08:19:15

Dobra ideja, na to pa nism pomislu.

Odgovori