Jag har använt VBA för att undersöka alla frågor, blanketter och moduler i min Access 2000-databas, men det kan vara ganska tråkigt och långsamt. Nyligen bestämde jag mig för att titta närmare på systemtabellerna i Access, särskilt MSysQueries och MSysObjects. Kan jag använda dessa tabeller för att granska mina objekt i databasen snabbare. Naturligtvis är dessa tabeller skrivskyddade, så jag kan inte göra några ändringar i databasen via dem utan att återvända till VBA. Vad betyder attributen i MSysQueries frågade 26 juni 13 kl 19:52 Tja, jag kom över det här inlägget på Google-grupper. Jag undersökte vidare på mina egna tabeller och ville dela en tabell med information som jag skapade inspirerad av redan utförda arbeten. Varje fråga kan ta upp flera rader i tabellen. Raden med attribut 0 är början på frågan. Raden med attribut 1 anger typen av frågan. Flagga värde 1 SELECT-fråga. Flaggvärde 2 VÄLJ. I fråga, eller en make-tabellfråga. Namn1 kommer att ha namnet på tabellen som skapas. Flaggvärde 3 INSERT-fråga Namn1 har namnet på tabellen att infoga till. Flaggvärde 4 UPDATE-fråga Flaggvärde 5 DELETE-fråga Flaggvärde 6 Kroppsförfrågan (TRANSFORM) Flaggvärde 9 UNION-fråga Raden med attribut 2 (det kan vara flera) är varje formell parameter för frågan. Flaggkolumnen indikerar datatypen (dvs 10 för dbText) och namnet 1-kolumnen anger parameterns namn. Om det inte finns några rader med attribut 2, har frågan inte formella parametrar. Raden med attribut 3 anger närvaron av UNION eller DISTINCT sökord. Flaggvärde 0 Inget särskilt Flaggvärde 1 UNION ALL Flaggvärde 2 VÄLJ DISTINCT Flaggvärde 3 UNION Flaggvärde 8 VÄLJ DISTINCTROW Flaggvärde 9 Frågor på masterfält och barnfält Raden med attribut 4 indikerar om frågan kommer från en extern databas. Namn1 kommer att innehålla källan om attribut 4 existerar. Raderna med attribut 5 (det kan vara flera) anger varje tabell som hittades i frågan. Om frågan är en UNION-fråga, har uttrycksfältet delat på UNION-sökordet och fältet Name2 har ett systemgenererat tabellalias. För alla andra tabeller i en fråga är Namn1 namnet på tabellen och Namn2 är aliaset, om det finns en. Raderna med attribut 6 (det kan vara flera) anger varje enskilt fält eller uttryck i frågan. Om det inte finns något attribut 6 för frågan är det antagna beteendet att alla fält ingår. Fältet Expression innehåller varje fältuttryck eller namn och Name1 innehåller fältet alias om det finns en. Flaggvärde 0 Värdet av fältet eller uttrycket Flaggvärde 1 Fältet är en kolumnrubrik i en kryssningsfråga. Flaggvärde 2 Fältet är en radrubrik i en kryssningsfråga. Raderna med attribut 7 (det kan vara flera) anger varje enskilt delta på uttryck. Fältet Expression innehåller det faktiska anslutningsuttrycket. Namn1 innehåller den första tabellen i föreningen. Name2 innehåller den andra tabellen i föreningen. Flaggvärde 1 Inner Anslut Flaggvärde 2 Vänster Gå med Flaggvärde 3 Höger Gå med i raden med attribut 8 innehåller hela WHERE-klausulen i fältet Expression. Om det inte finns någon var klausul är attribut 8 borttaget från frågan. Raderna med attribut 9 (det kan vara flera) anger varje enskild grupp efter uttryck i GROUP BY-klausulen i frågan. Expressionsfältet innehåller varje grupp genom uttryck. Flaggvärde 0 Värdet av fältet eller uttrycket Flaggvärde 1 Fältet är en kolumnrubrik i en kryssningsfråga. Flaggvärde 2 Fältet är en radrubrik i en kryssningsfråga. Raderna med attribut 11 (det kan vara flera) anger varje enskild ordning med uttryck i ORDER BY-klausulen i frågan. Expressionsfältet innehåller varje order med uttryck. Name1 har D eller d för att ange att sorteringen görs i fallande ordning. Raden med attribut 255 är slutet på frågan. Jag är inte exakt säker på vad Order-fältet gör, men jag fann att det inte är Null, och även om det ibland har ett värde på en tom sträng, har den inte alltid det värdet. Toma strängar uppträder på attribut 5, 6, 7 och 9, men det är inte alltid en tom sträng för de attributen. Vidare svarar Bobort och iDevlops: Raden med attribut 1 anger typen av frågan. Flaggvärde 7 DDL Query (t. ex. CREATE TABLE.) Flaggvärde 9 Passera förfrågan Raden med attribut 3 anger predikatet. Flaggvärde 1 Alla värden eller UNION ALL (om en UNION-fråga) Flaggvärde 4 MED ÄGARACCESS-OPTION Flaggvärde 16 TOP N Flaggvärde 48 TOP N PERCENT Raderna med attribut 5 (det kan vara flera) anger vardera FROM-tabellfrågan som finns i Fråga Expression innehåller FROM-källan eller SELECT-satsen om en UNION-fråga Rad med attribut 10 innehåller hela HAVING-klausulen i fältet Expression. Om det inte finns någon HAVING-klausul omges attributet 10 från frågan. Orderfältet är ett BIG-ENDIAN binärt värde som innehåller en rad med 4 byte (binära fält kan läggas till med VBA, men kan inte läggas till med användargränssnittet, om du inte kopierar och klistrar in från ett binärt fält i ett systembord.) Men i de flesta databaser i MSysQueries-tabellen är det osannolikt att du inte stöter på binära värden som är större än 255, så att du kan genomsöka omvandlingen till en byte genom att inspektera byte vid index 3. Till exempel: svarade den 8 juli kl 5: 08FX Enkelt alternativ Europeiska och amerikanska alternativ Identifierar sätta och ring valuta och belopp, övning stil, premium information Premium strukturerade liknande. Presentation på tema: FX Enkel Alternativ Europeiska och amerikanska alternativ Identifierar sätta och ring valuta och belopp, övning stil, premium information Premium strukturerad liknande. Presentation transkript: 1 FX Enkel Alternativ Europeiska och amerikanska alternativ Identifierar sätta och ring valuta och belopp, övning stil, premium information Premium strukturerade som en växlad valuta för en FX handel, inklusive valfri avvecklingsinformation för premiumen Valfri quotedAs struktur som beskriver hur alternativet var Ursprungligen citerade 4 FX Non Deliverable Options (NDO) Stödda inom CashSettlement-noden, vilket är identiskt med strukturen inom en standard NDF 5 FX-barriäralternativ Konventionellt alternativ som ändras om barriären uppnås Enstaka och flera barriärer Stödpris och barriärpris Valfritt barriärtypschema möjliggör differentiering mellan inslagning, utslagning, omvänd inslagning, omvänd utslagning Referens spot rate valfri men rekommenderad (avgör om alternativet behöver gå upp eller ner för att träffa barriären) Valfri utbetalning rymmer rabatter 7 FX binära digitala alternativ Alternativ som har diskontinuerliga utbetalningsprofiler (dvs. betalar ut fast belopp om uppfyller utlösning, annars betalar ingenting) Till skillnad från standardalternativ är belopp som anges är utbetalningsbelopp i motsats till underliggande teoretiska digitala alternativ som typiskt definieras som europeiska, vilket innebär att utbetalning endast sker om spoträntan överstiger eller ligger under utlösningsnivån vid utgången av dagen Digital , digitala digitala supportalternativ Binära alternativ är mer som amerikanska alternativ (utbetalning sker när som helst fram till utgångsdatum) Snabbt, utan beröring, dubbel snabbtryck, dubbelt utan beröring 11 FX genomsnittlig ränta (eller asiatisk) Alternativ Utbetalning baserad på Medelpriset för det underliggande, vanligtvis (men inte nödvändigtvis) över alternativets livslängd. Tillåter antingen parametrisk representation av medelvärdesschemat eller specifikationen för varje genomsnittlig period (inklusive viktningsfaktorn). Stödjer tidigare observerade observationer. Ställa in Microsoft Access VBA-modul Alternativ Korrekt Alternativ Inställningar i deklarationerna avsnitt av moduler och klasser I avsnittet över deklarationer i varje modul och klass har VBA alternativ för att ange hur MS AccessOffice (och VB6) ska uppträda. Trots att dessa är mycket viktiga använder de flesta erfarna VBAVB6-utvecklare standardalternativen och tänker sällan på dem. Men om du tar över eller felsöker någon annans kod kan de inte ha dessa inställningar, vilket kan leda till onödig förvirring när koden inte fungerar som du förväntar dig. Så det är viktigt att känna till dem, vad de gör och hur de bäst kan användas. Vi presenterar faktiskt fyra viktiga tips. Tips 1: Kräv variabel förklaring. Explicit är den viktigaste av dessa. Alternativ Explicit kräver att alla variabler och konstanter anges (definieras) innan de används. Variabler kan deklareras genom Dim och Static statements i rutinerna, och Global och Private kommandon i avsnittet Deklarationer. Genom att kräva dessa variabla deklarationer kan VBA fånga misstag som typsnitt när du sammanställer i motsats till när den trasiga koden körs. Att kunna generera kompilera tidsfel i stället för runtimefel är en grundläggande del av att skriva bättre kod. Alternativ Explicit läggs automatiskt till i koden om du har aktiverat variabeldeklarationer. Som standard skickas AccessOffice med det här alternativet av, så var noga med att slå på den. För att ställa in det, från VBA IDE, gå under menyn Verktyg, Alternativ och dess flik Editor: VBA Tools, Options-menyn: Kräv Variabeldeklaration Ska kontrolleras Se till att inställningen Variabel Declarationquot anges. När detta är markerat ingår varje gång du skapar en ny modul eller klass, Quotation Explicitquot-linjen. Ytterligare tips Du bör också stänga av alternativet Automatisk syntaxkontroll så att redaktören inte frågar och stoppar dig när du lämnar en rad som inte är klar. Tips 2: Verifiera och lägga till alternativ Explicit till moduler som saknar det Du kan manuellt gå igenom varje modul (inklusive kod bakom formulär och rapporter) för att verifiera att kommandot Option Explicit är angivet och lägg till det om det saknas. För ett mer automatiserat tillvägagångssätt för att säkerställa att alla moduler i din ansökan har alternativet Explicit, specificera, använd vår Total Visual CodeTools-produkt. En av de många alternativen i funktionen VBA-modulkodrening är att lägga till quotOption Explicitquot till varje modul som saknar den. Det kan också standardisera dina indragningar och lägga till din anpassade felhanteringskod till procedurer som saknar felhantering. Som en del av dess detaljerade kodanalys upptäcker vår Total Access Analyzer och flaggor moduler utan Option Explicit, så att du kan adressera den. Detta är bara en av 300 bästa praxis som detekteras av Total Access Analyzer. Tips 3: Säkert alternativ Jämför är rätt inställd Jämför anger hur strängförändringar utvärderas i modulen, t. ex. fallkänslig vs okänslig jämförelse (t ex ska quotAquot quotaquot vara True eller False). Som standard använder AccessVBA: Det här är en sak okänslig jämförelse och respekterar sorteringsordningen för databasen. I VB, som inte har alternativet Databas, är det samma som Textalternativet: Det betyder quotAquot quotaquot, som båda är mindre än quotBquot. För exakta (skiftlägeskänsliga) jämförelser är quotAquot inte detsamma som kvotkvot. Använd: Om du är felsökningskod och förvirrad eftersom du inte kan förstå att en giltig textjämförelse misslyckas när den fungerar i en annan modul, se till att du kontrollerar modulerna Alternativ Jämför miljö. Till exempel, om strValue nedan är quotYESquot, skiljer sig utvärderingen nedan utifrån alternativet Jämför alternativ: Generellt bör du använda standardalternativ för jämför jämförelse för din Access VBA-kod. Om du behöver göra en sak okänslig jämförelse, använd StrComp-funktionen med vbBinaryCompare-alternativet: På så sätt kan du flytta koden till en modul och alltid ha fallskänsliga jämförelser utan att behöva oroa dig för inställningen Alternativ Jämförelse. Tips 4: Använd alternativmodul för biblioteksdatabaser Om du skapar biblioteksdatabaser så att du kan ringa koden från en annan databas, överväg att använda kommandot Option Private Module. Med det här alternativet kan du dölja moduler från externa användare och göra det enklare att se dina synade funktionssamtal, vilket minskar listan över alternativ när du använder den inbyggda Microsoft IntelliSense. Med det här kommandot utsätts inte alla procedurer i modulen av biblioteket. Förfarandena kan fortfarande vara offentliga inom biblioteket och kallas av andra moduler. De är helt enkelt inte listade utanför den. Till exempel tillåter vi i våra Total Access Emailer och Total Access Statistics runtime-bibliotek att utvecklare ringer våra rutiner för att starta e-postblastningar eller statistiska beräkningar. Eftersom vi har många moduler vardera med många offentliga funktioner, skulle det vara överväldigande och förvirrande att filtrera genom alla dessa procedurer bara för att hitta de du behöver. Genom att använda Option Private Module för alla våra moduler, med undantag för en, kan vi avslöja bara våra offentliga funktioner. Och bara de funktionerna visas när vi refererar till vårt bibliotek: IntelliSense visar tillgängliga funktioner från runtime-biblioteket Total Access Emailer. Ytterligare resurser Jag har nyligen använt ODBC External Data, ODBC, Import-funktionen för att ladda ner (kopiera, inte länka) Great Plains SQL Server 2002-tabeller till Access 2010. När jag försökte ladda upp samma tabeller till en annan SQL Server 2008 R2 med hjälp av Upsizing Wizard, lade några av tabellerna inte upp några poster. När jag granskade de misslyckade tabellerna använde alla dessa tabeller en fältdatatyp av quotBinaryquot. Det är inte ens ett inbyggt val i Access 2010 så långt som en datatyp som jag kunde se. I fältet där det vanligtvis sägs quotTextquot, quotMemoquot, quotNumberquot, quotDateTimequot etc, var typen quoteBinaryquot, storlek 4 byte. Den udda delen är att när jag försökte välja en annan tillgänglig datatyp var Binary inte ens ett alternativ i Access 2010. När jag raderade något fält som sa quotBinaryquot, laddades tabellen framgångsrikt till SQL Server 2008 R2 med hjälp av Upsizing Wizard. Vet någon vad som händer här Rich Locus, Logicwurks, LLC Tisdag den 24 september 2013 20:55 Hej Fei och Peter: Tack för dina hjälpsamma inlägg. Faktum är att det är ett problem med Upsizing Wizard: (1) När jag använde ODBC-anslutningen i Access 2010 för att ladda ner (inte länka) en SQL Server-tabell 2002 inkluderade den quotBinaryquot i fälten importerade från SQL Server till Access. (även om det inte är inbyggt i åtkomst). (2) quotBinaryquot är inte ett alternativ i Access 2010, men ODBC inkluderade den beskrivningen i den nedladdade tabellen i Access 2010. (3) För att verifiera ett problem med Upsizing Wizard raderade jag alla utom 2 fält i Access 2010-tabellen som Jag laddade ner från SQL Server: Ett textfält som hade data, var INTE indexerat och var INTE obligatoriskt och BINARY-fältet. (4) Upsizing wizard liknade det, kastade mig ett felmeddelande och laddade inte upp åtkomst 2010-tabellen med 2 fält till SQL Server 2008 R2. (5) MEN. Jag använde guiden ImportExport som tillhandahålls av SQL Server 2010 (inte en åtkomstansökan), och den laddade upp tabellen utan problem. Så. Sammanfattningsvis är det bästa sättet att hantera binära fält som laddas ned från SQL-servern, INTE att använda guiden Access upsizing, men den inbyggda SQL Server ImportExport-guiden. Rich Locus, Logicwurks, LLC Markerad som svar av George Hua Moderator Måndag 07 oktober, 2013 2:53 Enligt din beskrivning tror jag att anledningen till att uppladdade tabellen inte innehåller några poster var: Ett fält i tabellen i Access-databasen kanske innehåller ett nollvärde för mer än en post, men den Indexed-egenskapen är inställd på Yes (No Duplicates) och Obligatorisk egenskap är satt till Nej. Om ett fält i ditt bord indexeras med dessa egenskapsinställningar, lägg inte till mer än en post som innehåller ett nullvärde till kolumnen. Ta bort posterna med nullvärdena och uppåtmatar sedan bordet igen. För mer information, se artiklarna nedan: DETTE INNEHÅLLET LEVERAS kvoterna ISquot UTAN GARANTI AV NÅGON KÄNN, UTAN EXPRESS ELLER IMPLEMENTERT Tack MSDN Community Support Vänligen kom ihåg att quotMark som Answerquot svaren som löste ditt problem. Det är ett vanligt sätt att känna igen dem som har hjälpt dig och gör det lättare för andra besökare att hitta upplösningen senare. Torsdag den 26 september 2013 11:51 Tack för ditt svar. Jag kommer noggrant undersöka innehållet i tabellerna som inte skulle ladda upp, och bestämma om villkoren du listade var närvarande. Också tack för noten att binär är en datatyp i SQL Server. Från vad jag kan säga är Binary INTE en datatyp i Access. Följande länk visar binär som en åtkomstdatatyp, men jag försökte allt i skapningsbordet för att välja ett fältvärde för binär, och jag kunde inte hitta den. När jag kom in i quotBinaryquot sa det att det inte var i listan. Var är det gömmer sig när du väljer datatypen för fältet Rich Locus, Logicwurks, LLC Torsdag 26 september 2013 20:33 Som du har upptäckt är det inte där. Jag skulle gissa att du är quotated mellan versionsquot och lägger till en axel för tonvikt. Vid 4 byte skulle en ekvivalent numerisk typ vara Long Peter n Roth - PNR1, kanske några användbara saker Fredag 27 september 2013 02:06 Hej Fei och Peter: Tack för dina hjälpsamma inlägg. Faktum är att det är ett problem med Upsizing Wizard: (1) När jag använde ODBC-anslutningen i Access 2010 för att ladda ner (inte länka) en SQL Server-tabell 2002 inkluderade den quotBinaryquot i fälten importerade från SQL Server till Access. (även om det inte är inbyggt i åtkomst). (2) quotBinaryquot är inte ett alternativ i Access 2010, men ODBC inkluderade den beskrivningen i den nedladdade tabellen i Access 2010. (3) För att verifiera ett problem med Upsizing Wizard raderade jag alla utom 2 fält i Access 2010-tabellen som Jag laddade ner från SQL Server: Ett textfält som hade data, var INTE indexerat och var INTE obligatoriskt och BINARY-fältet. (4) Upsizing wizard liknade det, kastade mig ett felmeddelande och laddade inte upp åtkomst 2010-tabellen med 2 fält till SQL Server 2008 R2. (5) MEN. Jag använde guiden ImportExport som tillhandahålls av SQL Server 2010 (inte en åtkomstansökan), och den laddade upp tabellen utan problem. Så. Sammanfattningsvis är det bästa sättet att hantera binära fält som laddas ned från SQL-servern, INTE att använda guiden Access upsizing, men den inbyggda SQL Server ImportExport-guiden. Rich Locus, Logicwurks, LLC Markerad som svar från George Hua Moderator Måndag, 07 oktober 2013 02:53
No comments:
Post a Comment