Vprašanja pri prehodu MSA-Base
Pogosta vprašanja in odgovori za tiste, ki prehajate iz Microsoft Access (MSA) na OpenOffice.org Base.
To je projekt skupnosti uporabnikov - dodajte znanje, če ga lahko.
Vendar ohranite vprašanja in odgovore splošne. Če je vprašanje, ki zadeva funkcionalno določeno različico MSA, vključite tudi številko različice.
Natančneje, wiki posodobite le, če imate odgovor na vprašanje, ki ga dodajate. ( Če ne morete takoj vnesti odgovora, naj vas to ne ustavi, da ne bi najprej vnesli vprašanja - le ne vrnite se prepozno. )
Če želite zastaviti specifično vprašanje ali za splošno pomoč raje povprašajte na Forumu Base ali na dopisnem seznamu uporabnikov programa Base.
Contents
- 1 Lahko uporabljam zbirke podatkov Microsoft Access (.mdb) v Base?
- 2 Lahko berem svojo zbirko podatkov Base iz programa MS Access?
- 3 Lahko ustvarim zbirko podatkov Access (datoteko mdb) z Base?
- 4 Lahko z Base ustvarim stikalno ploščo?
- 5 Naša zbirka podatkov Access uporablja "Varnost delovnih skupin" za nadzor dovoljenj skupin/uporabnikov za ogledovanje/vzdrževanje podatkov?
- 6 Se obrazec Base razlikuje od obrazca v MSA?
- 7 Kje so poizvedbe Izbriši / Posodobi?
- 8 Želim filtrirati svoj obrazec glede na vsebino kombiniranega polja?
- 9 Pretvorba mojih modulov VBA v module Base
- 10 Če uporabljam polja/stolpce Lookup v svojih tabelah Access, kaj lahko storim v Base?
- 11 Kako uporabim domensko agregatne funkcije v Base?
- 12 Kako svojim obrazcem in poročilom dodam izračunane kontrolnike?
Lahko uporabljam zbirke podatkov Microsoft Access (.mdb) v Base?
V okolju Windows: da. Ne morete jih neposredno odpreti prek Datoteka|Odpri
, vendar lahko dostopite do vsebovanih podatkov. Za to potrebujete datoteko zbirke podatkov Open Document (*.odb), ki vsebuje podatke o povezavi. Podrobnosti najdete v Povezovanje z Microsoft Access.
Spreminjate lahko podatke v tabelah, dodajate in odstranjujete lahko zapise. Ustvarjate lahko nove tabele, vendar ne morete spreminjati strukture obstoječih tabel.
Poizvedbe MS Access so prikazane kot pogledi v vsebniku tabele. Rezultate poizvedbe lahko uporabite, vendar nimate dostopa do podležnih definicij in jih ne morete spreminjati.
Obrazcev in poročil MS Access ne morete brati.
Lahko berem svojo zbirko podatkov Base iz programa MS Access?
Ne obstaja noben način, da bi uporabili mehanizem povezovanja s tabelami Access za povezovanje z zbirko podatkov Base.
Z zbirko podatkov Base lahko posodobite podatke v zbirki podatkov Access. Trenutno je za to potrebno, da zbirko podatkov Access odpre in zaklene datoteka Base.
Podatke bi lahko vrnili v zbirko podatkov Access, če bi ustvarili povezano datoteko CSV v zbirki podatkov Base. Nato bi povezali s to datoteko CSV tabelo v zbirki podatkov Access.
Lahko ustvarim zbirko podatkov Access (datoteko mdb) z Base?
Ne. Base ne more ustvariti nove datoteke zbirke podatkov Access niti novih tabel, poizvedb, obrazcev itn. v okviru obstoječe datoteke mdb.
Lahko z Base ustvarim stikalno ploščo?
Base trenutno nima čarovnika za obrazce v slogu stikalne plošče. Vendar je mogoče doseči zelo podoben učinek z eno izmed treh spodnjih tehnik.
Kako odprem privzeti obrazec prek makra
Uporaba samostojnega obrazca za zagon zbirke podatkov Base
Razširitev Stikalna plošča Base
Začel se je razvoj orodja za stikalne plošče v OOo, oglejte si razširitev Roberta Beniteza Stikalna plošča Base.
Naša zbirka podatkov Access uporablja "Varnost delovnih skupin" za nadzor dovoljenj skupin/uporabnikov za ogledovanje/vzdrževanje podatkov?
To vprašanje izpostave temeljno razliko med OOoBase in MS Access (MSA). V primeru MSA je v rabi en sam mehanizem zbirk podatkov - čeprav lahko v MSA povežete tabele na zunanji vir podatkov - MS Jet je še vedno edini mehanizem zbirk podatkov, ki ga MSA dejansko uporablja.
V Base (OOoBase) je povsem drugače. Dokument zbirke podatkov Base je enostavno pročelje (program odjemalca) za raznovrstne mehanizme zbirk podatkov. V eni variaciji lahko vdela zbirko podatkov HSQLDB v samo datoteko ODB, številni pa enostavno vidijo to kot edino vrsto zbirk podatkov v Base. To je povsem napačno. V tem primeru vdelane zbirke podatkov ne podpira več uporabnikov in seveda zato ne podpira skupin. Vendar je to le en način dela z modulom Base.
Uporabite Base kot pročelje za zbirko podatkov HSQLDB v strežniškem načinu. HSQLDB ima mehanizem zbirke podatkov z zelo majhnimi sistemskimi zahtevami ter nizkim obsegom upravljanja in v strežniškem načinu popolnoma podpira uporabnike / skupine. Pri večjem številu uporabnikov lahko enako enostavno prilagodite Base za delo s strežnikom MySQL, PostgreSQL, Firebird, Oracle ali MS SQL.
Še ena pomembna razlika glede tega je med MSA in Base. V MSA bi vzpostavili eno datoteko MDB (ali eno od njenih različic), nato pa bi jo vsak uporabnik v delovni skupini videl in odprl.
V Base bo imel vsak uporabnik svojo lastno datoteko ODB in vsaka izmed njih se bo povezala s skupnim podatkovnim strežnikom. Na ta način bo imel vsak uporabnik svoj lasten prostor za poizvedbe in poročila po meri - vendar je s tem distribucija skupnih obrazcev, povpraševanj in poročil bolj zapletena.
Se obrazec Base razlikuje od obrazca v MSA?
Da. Obstajajo velike razlike med implementacijo obrazcev v Access in Base.
Navidezni obrazci so v Base poimenovani "podobrazci". Z njimi ravnate tako, da odprete obrazec v urejevalnem načinu in nato kliknete "Krmar po obrazcih" v orodni vrstici "Oblikovanje obrazca".
Kje so poizvedbe Izbriši / Posodobi?
Base trenutno ne podpira gradnjo poizvedb delete / insert / update v oblikovalcu.
Ekvivalentna dejanja
Uporaba oblikovalca poizvedb
Ekvivalentna dejanja lahko dosežete v uporabniškem vmesniku z uporabo oblikovalca in/ali ukazov SQL.
Uporaba makra
Želim filtrirati svoj obrazec glede na vsebino kombiniranega polja?
Pretvorba mojih modulov VBA v module Base
Kaj se je zgodilo z me?
Noben enak dvojnik psevdo-spremenljivke ME ne obstaja v VBA.
V Access VBA ima 'me' atribute dveh ločenih predmetov v OOoBasic: TextDocument in DataForm
Predmet TextDocument bi npr. uporabljali za nadzor velikosti in postavitve okna na zaslonu.
DataForm pa podpira funkcije z množico rezultatov, kot so First, Filter, InsertRow.
V OOoBasic bi bila psevdo-spremenljivka thisComponent navadno TextDocument, medtem ko bi se thisComponent.DrawPage.Forms(0) skliceval na prvi DataForm, ki je v lasti TextDocument.
Najbrž je temu še najbolj podobna raba hierarhije lastništva, s katero pridete do obrazca. Primer: če bi imeli obrazec tabele z gumbom, tedaj bi v makru, ki ga pokliče 'onClick' (ali, kot je to v OOBase, dogodek 'When initializing'), naredili naslednje: ustvarili makro v knjižnici, imenovani onButtonClick( oEv as object )
sub onButtonClick( oEv as object ) ' oEv je predmet dogodka, samodejno podan ' ima lastnost SOURCE, ki je gumb, ' ki je iniciiral ta klic dim oForm as variant oForm = oEv.Source.Model.Parent ' oForm je zdaj navidezni predmet obrazca dim oDocument as variant oDocument = thisComponent ' oDocument je zdaj textDocument, prikazan ' v oknu na zaslonu end sub
Kje je findfirst?
Base na prvi pogled nima funkcije FindFirst za množico vrstic kot MS Access, kaj je torej ekvivalentna funkcija v Base?
Primer MSAccess VBA:
Recimo, da imamo kombinirano polje VB, ki izpiše vse stranke v zbirki podatkov in uporabniku ponuja izbor določene stranke in nato obrazec samodejno usmeri na podatkovni zapis te osebe.
Private Sub Find_Combo_AfterUpdate() Dim strCriteria As String strCriteria = "[Stranka_ID] =" & Me.Find_Combo Me.recordsetclone.FindFirst (strCriteria) If me.recordsetclone.NoMatch Then MsgBox "Zapisa ni mogoče najti" Else Form_F_Prospects.Bookmark = me.recordsetclone.Bookmark End If End Sub
Za tovrstna enostavna enostolpčna iskanja je razmeroma enostavno ustvariti naš lasten ekvivalent za iskanje prvega v OOoBasic:
Sub Find_Combo_AfterUpdate( OEv as Object) ' Oev je dogodek, ki ga je predmet samodejno poslal ' klicu pod-procedure ' Oev bo imel lastnost Source, ' ki je kontrolnik, ki je sprožil ' klic te procedure Dim oForm as variant ' Predmet dataform Dim oComboBox as variant ' Kontrolnik kombiniranega polja Dim oBkMark as variant oForm = oEv.Source.Model.Parent oComboBox = oForm.getByName( "Find_Combo" ) oBkMark = FindFirst( oForm.CreateResultSet(), "Prospect_ID", oComboBox.Text ) ' oForm.CreateResultSet() je tukaj ekvivalenten me.recordsetclone if not IsEmpty( oBkMark ) then oForm.moveToBookmark( oBkMark ) else msgBox( oComboBox.Text & " ni mogoče najti" ) end if end sub
function FindFirst( oRS as variant, ColName as string, SearchVal as string ) as variant ' oRS je predmet resultSet ' ColName je ime stolpca množice rezultatov ' SearchVal je iskana vrednost dim colIDX as integer dim NotFound as variant FindFirst = notFound colIDX = oRS.FindColumn( ColName ) oRS.First do if oRS.getString( colIDX ) <> Searchval oRS.Next if oRS.isAfterLast then exit do endif else FindFirst = oRS.getBookMark exit do end if loop while oRS.isAfterLast <> True end function
Kako nastavim filter le za podobrazec?
Ali obstaja ekvivalent DoCmd RunSQL
Da, v OpenOffice.org Base bi uporabili predmet Statement ali PreparedStatement, s katerim bi dosegli enako funkcijo. Z OpenOffice.org Base se morate tudi odločiti med uporabljanjem execute in executeUpdate.
Primer: če ste imeli vrstico kode VBA:
DoCmd RunSQL( "SELECT * FROM tContacts" )
bi v OpenOffice.org Base imeli:
Dim oStatement as variant oStatement = OForm.ActiveConnection.CreateStatement ' Kjer je oForm predmet DataForm ' OPOMBA enako bi lahko naredili tudi ' s predmetoma resultSet in rowSet ' oStatement = OResultSet.ActiveConnection.CreateStatement oStatement.execute( "SELECT * FROM ""tContacts""" )
Če pa bi z druge strani imeli vrstico kode VBA:
DoCmd RunSQL( "DELETE FROM tContacts WHERE Status = 'INACTIVE'" )
potem bi nad izjavo uporabili metodo executeUpdate:
oStatement.executeUpdate( "DELETE FROM ""tContacts"" WHERE ""Status"" = 'INACTIVE'" )
Pravilo se glasi -
- če izjava SQL vrne zapise, uporabite execute ali executeQuery.
- če izjava SQL ne vrne zapisov, uporabite executeUpdate.
Če uporabljam polja/stolpce Lookup v svojih tabelah Access, kaj lahko storim v Base?
Odgovor na to vprašanje je v dveh delih, ker Base v tabelah ne podpira vrste stolpcev Lookup.
Če je tabela prikazana v obliki po meri, boste z rabo seznamskega polja bound dobili enako funkcionalnost. Primer dodajanja seznamskega polja obrazcu in kontrolniku mreže na obrazcu je na tej strani.
V pogledu tabele ( dvoklik na ime tabele ) ekvivalent ne obstaja.
Kako uporabim domensko agregatne funkcije v Base?
Domenske agregatne funkcije, kakršne so DCount, DLookup in DMax, nimajo neposrednih ekvivalentov v Base. Z ustreznimi funkcijami SQL boste morali napisati ali oblikovati poizvedbe, ki vrnejo takšne rezultate.
Kako svojim obrazcem in poročilom dodam izračunane kontrolnike?
Kontrolnikov obrazcev in poročil Base ni mogoče uporabiti za izvajanje izračunov. Na voljo sta metodi za pridobitev rezultata izračuna z obrazca ali poročila.
Uporaba poizvedb
Spremenite podležni vir podatkov obrazca ali poročila, da izvedete izračun za vsak zapis in vrnite rezultat kot (izračunano) polje.
Uporaba makra
Če potrebujete posodabljanje kontrolnika ob vsakem vnosu podatkov v obrazec, morate napisati kratek makro, ki izvede izračun in dodeli rezultat ustreznemu dogodku enega od kontrolnikov vnosa podatkov (npr. dogodku Text modified).
Avtor: MSA-Base Faq Drew 21:01, 11. september 2007 (CEST) '
Prosimo, da ne spreminjate vsebine tega mesta brez vedenja avtorja ali vodij projekta OOo QA.