10.19.2009

Word: Winzige Schrift in der Dokumentstruktur

Wenn auf einmal (?) die Schrift in der Dokumentenstruktur winzig wird hilft meistens folgendes Vorgehen:
  1. unter ansicht auf gliederung wechseln
  2. unter ansicht wieder auf seitenansicht wechseln
  3. voila -- aber bitte nicht fragemn WARUM es klappt

Lösung gefunden bei http://www.office-loesung.de/ftopic24438_0_0_asc.php

10.01.2009

Geniale Möglichkeit unter ORACLE fortlaufende Zahlen bzw. Datumsintervalle zu erzeugen

Es gibt eine geniale Möglichkeit in ORACLE fortlaufende Nummern zu erzeugen. Die nachfolgend Anweisung erzeugt z.B. die Zahlen 1 bis 100:

select level
from dual
connect by level<=100


Und dies kann man nutzen um damit alle Datumswert in einem Bereich zu erzeugen:

select to_date('2009-07-01','yyyy-mm-dd')+level-1 datum
from dual
connect by level<=to_date('2009-08-01','yyyy-mm-dd')-to_date('2009-07-01','yyyy-mm-dd')


Dank an Uwe Simon!

2.04.2009

Pass-Through doch als Excel exportieren

Weder über das Kontextmenü noch über docmd.TransferSpreadsheet ist Access dazu zu bringen eine Pass-Through-Abfrage zu exportieren.

Wenn man jedoch eine lokale Abfrage "zwischenschaltet" dann geht es.

Name der Pass-Through: Pt1
SQL der lokalen Abfrage: Select * from Pt1

Wichtig ist noch, dass man die lokale Abfrage im SQL-Modus erstellt.

1.30.2009

MS Access GetOption / SetOption

Hier (http://www.access-im-unternehmen.de/fileadmin/download/AccessOptionen.pdf) findet man eine Liste von deutsch/englischen Angaben zu den Optionsnamen in MS Access.

Klasse und Danke an den Autor!

2.26.2008

Excel ist kleinlich

Soll von einem anderen Programm (z.B. Access) aus auf Excel zugegriffen werden, so muss jedes Range und Rows mit dem richtigen Worksheet-Objekt adressiert werden.

Sonst sucht sich Excel bei mehreren Instanzen und benannten Bereichen einen aus bzw. liefert einen Fehler mit ... für _Global fehlgeschlagen.

Tasks finden leicht gemacht

Mit Word-VBA ist das Auffinden von Tasks sehr einfach:



Und hier weniger schön zum rauskopieren:
Sub ZeigeExcel() Dim tskJeder As Task For Each tskJeder In Tasks If InStr(LCase(tskJeder), "excel") Then tskJeder.Visible = True End If NextEnd Sub

2.04.2008

Nützliche Funktionen

Für die Ermittlung von Teilen eines Datums immer wieder gut zu gebrauchen:

EXTRACT (YEAR from sysdate)

Cache leeren:
ALTER SYSTEM FLUSH BUFFER_CACHE; 

1.25.2008

TOAD-Fehler bei Varchar2

TOAD-Version: 8.0.0.47

Im TOAD-Debugger tritt ein Fehler (undeclared identifier) auf, wenn eine Varchar2-Variable mehr als 999 Zeichen enthält und man diese direkt oder mit Watches beobachtet.

Der Code läuft völlig problemlos solange man die Variablen nicht beobachtet.

Eine Lösung zu diesem Problem habe ich noch nicht gefunden.

Benutzerdefinierter Fehler beendet Ausführung und gibt dennoch Meldung aus

Die Anweisung

raise_application_error (-20002, 'do_mcontract2baan - Kein Kundencursor geöffnet!');

erzeugt eine Fehlermeldung. Der Code wird dann nach dieser Meldung fortgesetzt.

Verwendet man

EXCEPTION WHEN others
THEN

so wird zwar die Bearbeitung beendet, aber leider auch die Meldung geschluckt.

Die Lösung:

Es wird ein eigener Fehler im PACKAGE definiert:

Fehler_Als_Meldung EXCEPTION;

und diesem dann die gewünschte Fehlernummer zugewiesen:

PRAGMA EXCEPTION_INIT (Fehler_Als_Meldung, -20002);

und eine Behandlungroutine wie folgt implementiert:

EXCEPTIONWHEN fehler_als_meldung
THEN
raise_application_error (-20003, SQLERRM);

Und schon wird die Ausführung des Code unterbrochen und die Meldung ausgegeben!

1.11.2008

n Werte in einer Spalte verknüpft

Immer wieder möchte man die Werte eines Feldes aus n Datensätzen in einem Feld wiederbekommen.
Hier die Function dafür:


Und hier weniger schön formatiert zum rauskopieren:
CREATE OR REPLACE FUNCTION rowconcat(q in VARCHAR2) RETURN VARCHAR2 IS
ret VARCHAR2(4000);
hold VARCHAR2(4000);
cur sys_refcursor;
BEGIN
OPEN cur FOR q;
LOOP
FETCH cur INTO hold;
EXIT WHEN cur%NOTFOUND;
IF ret IS NULL THEN
ret := hold;
ELSE
ret := ret '; ' hold;
END IF;
END LOOP;
RETURN ret;
END;
/

12.13.2007

10.08.2007

Initialisierung für Datum das nicht NULL sein darf

Für Datumsfelder die nicht NULL sein dürfen kann folgendes Datum als leerer Wert verwendet werden:


TO_DATE('-47120101','SYYYYMMDD')

8.17.2007

ORACLE, TOAD und "&"

Wird im Insert in TOAD das Zeichen "&" erkannt, so will Toad dort immer per Formular den einzusetzenden Wert vom User wissen. Vermeidung:
Ersetzen aller "&" durch

'││ Chr(38) ││'

Dies führt zum gewünschten Ergebnis - ohne blöde Nachfrage.

3.14.2007

Login (NT) und OSUser (ORACLE)

ACHTUNG!

Windows ignoriert beim Anmeldename Groß- und Kleinschreibung.
Die ORACLE-Funkton SYS_CONTEXT('USERENV','OS_USER') liefert den Namen aber in Großklein!

Wenn also mit einem Eintrag in einer Tabelle verglichen wird, sollte mit Lower gearbeitet werden:

... lower(login) = lower(SYS_CONTEXT('USERENV','OS_USER'))

3.13.2007

Access ODBC-Timeout einstellen

Die Einstellung kann über das Datenbank-Objekt getroffen werden (für ODBC-Direkt) oder einfacher in der Registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\ODBC\QueryTimeout

11.24.2006

Login des aktuellen Benutzers unter ORACLE ermitteln

Im klassischen Before-Row-Update-Trigger kann das Login des aktuellen Bearbeiters als Last Change User mit der folgenden Zeile ermittelt werden:

:new.LAST_CHANGE_USER_IST := SYS_CONTEXT('USERENV','OS_USER');

1.20.2006

Abfangen von Indexverletzungen mit eigenen Meldungen

Es gibt in AccessXP ein neues Formularereignis, dass es erlaubt, eine allgemeine Reaktion auf sogenannte Laufzeitfehler (meiner Meinung nach besser: Datenfehler) zu reagieren:
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Select Case DataErr
Case 3022 'Indexverletzung
MsgBox "Eigene Meldung!"
Response = 0
Case Else
'Normale Meldung
End Select

1.16.2006

Spezielle ORACLE-Anweisungen

Gesammeltes zu ORACLE!

Anzeige der erteilten Berechtigungen:

select * from user_tab_privs_made



Quelle: http://www-it.desy.de/systems/services/databases/oracle/at_desy/user_objects.html.de

Hier eine Tabelle der ORACLE-Systemtabellen und -views: http://www.techonthenet.com/oracle/sys_tables/index.php

Datumsanteile:

trunc()

oder

extract (year from Feldname)