Zum Inhalt springen

Olli_Master

Mitglieder
  • Gesamte Inhalte

    203
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Olli_Master

  1. Lösung 2: Genau für diesen Fall gibt es unter MS Access den Befehl nz(...) Syntax: Nz(Variant[, WertWennNull]) Beispiel: Select Kunde, nz(Ort,'')as Ort From Kunden Mehr Informationen dazu gibt es in der MS Access Sprachverzeichnis (Hilfe).
  2. Mit Begrenzung meinte ich natürlich nicht die theoretische Grenze von 255 Nutzern, sondern die Grenze, ab der das Arbeiten nicht mehr sinnvoll möglich ist. Das ist natürlich von verschiedenen Faktoren abhängig...
  3. Access Benötigt MS Windows und MS Office Prof. - Lizenz pro Arbeitsplatz vergleichsweise geringerer Preis begrenzte Nutzerzahl Hauptsächlich als Desktop-Datenbank konzipiert Umständliches, nicht ANSI-Konformes Berechtigungsmodell relationales Modell ... Oracle Betriebssystemunabhängig wesentlich teurer quasi unbegrenzte Nutzerzahl (je nach Anwendungs und Server relationales Modell, objekt-Modell ...
  4. Was passiert denn als Reaktion auf den Mausklick (VBA-Code)? Mögliche Lösung: 1. Suchabfrage eingeben und ok-klicken 2. onclick_ereignis --> SQL-Abfrage gemäß der Suchabfrage ändern. 3. Daten des Unterformular mittels <<Unterformularname>>.Form.Requery erneuern. Ich hoffe das hilft...
  5. Olli_Master

    Access-Abfrage

    Frage: Wozu brauchst man eine Abfrage, wenn man alle Felder durchsuchen will? Da kannst man auch die eingebaute Suchfunktion von Excel oder Access (STRG+F im Tabellenblatt) benutzen. Aber mal im ernst: Eine richtige "Volltextabfrage" gibt es in Access nicht - wenn man mehrere Felder gleichzeitig nach dem gleichen Text durchsuchen möchte, kann man einen Abfragparameter und den LIKE Operator verwenden: (In der SQL-Ansicht der Abfrage folgendes SQL-Abfrage eingeben) SELECT * FROM tabelle WHERE (Feld1 LIKE '%' & [Suchbegriff] & '%') OR (Feld2 LIKE '%' & [Suchbegriff] & '%') OR (Feld3 LIKE '%' & [Suchbegriff] & '%') Der Abfrage-Parameter wird im Access in Eckigen Klammern angegeben - % ist ein Platzhalter für eine beliebige Zeichenkette. Wenn man die Abfrage ausführt wird der Suchbegriff in einem Dialogfeld abgefragt. --> Die Feld- und Tabellenamen sind an deine Bedürfnisse anzupassen... Ich hoffe das hilft.
  6. Die Oracle-Dokumentation sagt (leider nur auf Englisch): Oracle8i Supplied PL/SQL Packages Reference Table 5-2 DBMS_AQADM Package Subprograms CREATE_QUEUE_TABLE Procedure Creates a queue table for messages of a pre-defined type. ALTER_QUEUE_TABLE Procedure Alters an existing queue table. DROP_QUEUE_TABLE Procedure Drops an existing queue table. ---------- DROP_QUEUE_TABLE Procedure This procedure drops an existing queue table. All the queues in a queue table must be stopped and dropped before the queue table can be dropped. You must do this explicitly unless the force option is used, in which case this done automatically. Syntax DBMS_AQADM.DROP_QUEUE_TABLE ( queue_table IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE, auto_commit IN BOOLEAN DEFAULT TRUE); Parameters Table 5-5 DROP_QUEUE_TABLE Procedure Parameters Parameter Description queue_table Name of a queue table to be dropped. force FALSE: The operation does not succeed if there are any queues in the table. This is the default. TRUE: All queues in the table are stopped and dropped automatically. auto_commit TRUE: Causes the current transaction, if any, to commit before the DROP_QUEUE_TABLE operation is carried out. The DROP_QUEUE_TABLE operation becomes persistent when the call returns. This is the default. FALSE: The operation is part of the current transaction and becomes persistent only when the caller enters a commit. Caution: This parameter has been deprecated. ---- Ich hoffe das hilft.
  7. 1. Vorschlag: Lass dir mal die doppelten Datensätze aus deiner Quelltabelle ausgeben: (Datensätze aus folgender Abfrage) select min(KS), Count(KS) from BV.dbo.T_H group by KS having Count(KS)>1; 2. Vorschlag: (Nur so ne Idee) Gibt es vielleicht irgendwelche Trigger auf der Zieltabelle?
  8. Eine Beziehung zu sich selbst funktioniert prinzipiell wie jede andere Beziehung auch. Allerdings gibt es nur weniger Anwendungsfälle dafür - z.B. Nehmen wir an du hast eine Datenbank, welche viele Artikel enthält. Nun sollen diese Artikel Kategorisiert werden. Weil es aber sehr viele Kategorien werden, sollen diese als Hierarchie/Baumstruktur gespeichert werden. z.B. Elektronik -- PC ---- Zubehör ------ DVD-RAM -- Monitor ---- CRT ---- TFT -- Drucker In der Tabelle steht dann: KatId ParentId Kategorie ----------------------------------------- 1 Null Katalog 2 1 Elektronik 3 2 PC 4 3 Zubehör 5 4 DVD-RAM 6 2 Monitor 7 6 CRT 8 7 TFT 9 2 Drucker Ähnlich ist bei Organisationsstrukturen, Mitarbeiterhierarchien (wer ist Chef von wem) und allen Arten von Menüs. Im Prinzip alles, wo die maximale Anzahl von Stufen nicht feststeht. Allerdings ist so etwas "mit Vorsicht zu genießen", da man es mit einfachen SQL-Anweisungen nur sehr mühsam Abfragen kann... Ich hoffe das hilft...
  9. Idee: Ist der Datensatz bereits gespeichert wenn der Serienbrief geöffnet wird?
  10. AFAIK ist es nicht möglich eine Listenspalte direkt als Feld anzusprechen. Einzelne Werte kann man über die Eigenschaft Column abfragen: =[Formulare]![HF_Berichte]![Bezeichnung].[Column](1) Dies betrifft dann die Daten der aktuell ausgewählten Zeile und der 2. Spalte (0 = erste, 1 = zweite usw.) Ich hoffe das hilft weiter.
  11. RRRR und YYYY haben eine ähnliche Bedeutung. Allerdings gibt es einen kleinen, aber feinen Unterschied - nämlich dann, wenn 2-stellige Jahreszahlen ins Spiel kommen: Beispiel: SQL> select to_char(to_date('01.01.98','DD.MM.RR'),'DD.MM.YYYY') from dual; Ausgabe ---------- 01.01.1998 SQL> select to_char(to_date('01.01.98','DD.MM.YY'),'DD.MM.YYYY') from dual; Ausgabe ---------- 01.01.2098 Dies spielt aber nur eine Rolle, wenn eine Zeichenkette mit 2 stelligem Jahr in einen Datumswert umgewandelt werden soll.
  12. 2 Beispiele: Festes Datum: SELECT ename,hiredate FROM scott.emp WHERE trunc(hiredate) = TO_DATE('20.02.1981','DD.MM.RRRR'); (trunc entfernt die Uhrzeit, indem die Nachkommastellen ignoriert werden) Datumsbereich: SELECT ename,hiredate FROM scott.emp WHERE hiredate BETWEEN TO_DATE('01.01.1981','DD.MM.RRRR') AND TO_DATE('01.06.1981','DD.MM.RRRR'); Ich hoffe das hilft.
  13. Hat Siedler 3 denn mit DirectX 8.1 unter WinXP funktioniert? (Bei mir nämlich nicht! - PIII2.4, ATI AIW 9000, 256MB-DDR) Diablo II läuft bei mir sowohl mit DirectX 8, als auch DirectX 9 (ohne Update) ! Demnach könnte es m.E. auch ein Treiberproblem sein, oder? Ich hoffe das hilft.
  14. Olli_Master

    VB6 unter Linux

    Ohne Zusatztools wird das ein wenig schwierig, da VB auf eine Laufzeitumgebung (vb Runtime) setzt. Vielleicht hilft da aber ein Windows-Emulator oder eine "Windows Compatiblity Layer" (z.B. Wine ) weiter. Aber ob die Anwendung dann wirklich Stabil läuft ist dann eine andere Frage... Ich hoffe das hilft...
  15. Es gibt ab Nero 5.? ein Kommandozeilentool, das kann unter anderem auch CDs ein- und auswerfen. Am besten mal im Nero-Verzeichnis nachschauen.
  16. Dafür gibt es keine in Access bereits vorhandene Funktion (außer die von dir schon beschriebene Variante): s. Access-FAQ(Punkt 6.6) Alle Alternativen sind "Krücken" um das Problem irgendwie zu umgehen, z.B.: - Startmenü-Verknüpfung zum Komprimieren der Datenbank (Kommandozeilenparameter /compact - siehe Access-Hilfe) - Eine 2. Access-Datenbank öffen, welche die aktuelle Datenbank schliesst, komprimiert und wieder öffnet - Ein Access Add-In was diese Schritte erledigt. - .... Ich hoffe das hilft ein wenig..
  17. Schau dir mal in der Access-Hilfe die Methode CreateTableDef an. Hiermit kann man normale Access-Tabellen, als auch Tabellenverknüpfungen erzeugen. Die Tabellendefinition hat eine Eigenschaft (Attribut) Connect, welche die Attribute der Verknüpfung bestimmt. Die Werte sind ggf. von ODBC-Treiber zu ODBC-Treiber verschieden. Über diese Eigenschaft kann man die Verknüpfung auch ändern. Aber Vorsicht - man sollte wissen, was man da genau macht...
  18. >> 2. Wo kann man konfigurieren, wie Zahlenwerte in der DB abgegelegt werden, d.h. ob mit Punkt oder Komma als Trennzeichen? Das wird gar nicht eingestellt. Lediglich die Anzeige wird konfiguriert. Das ganze läuft normalerweise länderspezifisch ab. Die Datenbank ist normalerweise mit einem bestimmten Zeichensatz installiert z.B. ***GERMAN.*** Verbindet sich ein Benutzer mit der Datenbank und gibt keine speziellen Einstellungen an, so bekommt er die Einstellungen vom Server. Im SQL-Plus kann man diese Einstellungen z.B. mit alter session set NLS_NUMERIC_CHARACTERS = ',.'; ändern. Nächere Informationen dazu im OracleTechnet Ich hoffe das hilft.
  19. Es ist wichtig, dass du zunächst bestimmst, was genau das Problem ist. Eine Reorganisation von Objekten ist nämlich nicht ganz so einfach. Nun zu deinen Fragen: > 1. Frage: Ist das eine extra Software??? Ja - wie gesagt, es handelt sich um Zusatzpacks für den Enterprise-Managers (OEM), welche extra lizensiert und installiert werden müssen.Informationen über den OEM - Bis zur 2.2-Version des OEM müssen die Packs außerdem auf dem Administrationsrechner installiert sein. Folgende Packs wären für dich wichtig: - Diagnostic Pack: Analyse der Datenbank-Problemen, Bestimmung des Fehlers - Tuning Pack: Reorganisation von Tabellen und Indices > 2. Frage: Wie kann ich einen Tablespace reorganisieren? a) Mit installierten Tuning-Pack via OEM unter "Werkzeuge" --> "Tuning Pack" --> "Reorganisations-Assistent" (Datensicherung!!!) Ohne Tuning Pack: Indem man die Speicherparameter für die defragmentierten Tabellen/Indices korrekt vergibt (--> DBA) und dann das entsprechende Datenbankschema exportiert und neu importiert. (-->DBA ... Datensicherung, usw.) ------------ Bevor du mit Sachen wie einer Reorganisation anfängst, prüfe erst mal, ob du wirklich Tabellen bzw. Indices mit vielen Fragmenten (>=10) hast (Die Spool-Datei musst du ggf. noch anpassen, für die Indices musst du 'TABLE' in 'INDEX' ändern...). Alles ab 10 Segmenten kann die Performance beeinflußen. spool c:\temp\DBTuning_FragNeed.lst set line 200 set echo off set feedback off column "Next [M]" format 9G990D00 set heading on set termout on select substr (de.owner, 1, 20) "Owner" , substr (de.segment_name, 1, 30) "Table Name (Segment)" , substr (de.tablespace_name, 1, 12) "Tablespace Name" , count (*) "Frag" , dt.next_extent / 1024 / 1024 "Next [M]" , substr (df.name, 1, 35) "DataFile Name" from sys.dba_extents de , v$datafile df , sys.dba_tables dt where de.file_id = df.file# and de.owner = dt.owner and de.segment_name = dt.table_name and de.segment_type = 'TABLE' group by de.owner, de.segment_name, de.tablespace_name, dt.next_extent, df.name having count(*) > 9 order by count(*) desc; spool off Das mit dem zu geringem physikalischen Speicher ist übrigens eine gute Idee, dass müsste man mit den Systemmonitor-Statistiken für Windows 2000 erkennen können. Noch Fragen?
  20. >> In Oracle gibt es eine Funktion "Statistiken aktualisieren" o.ä. ... was m. E. einer Reorganisation gleichkommt. Das ist nicht richtig. Bei einer Reorganisation werden i.A. die Daten der Tabellen sozusagen "defragmentiert" - bei einem ANALYZE werden lediglich Statistiken für die optimierung von SQL-Statements erstellt. Ein Analyze verschiebt keine Daten innerhalb der Datendateien. 3 Vorschläge a) Ich würde zunächst Versuchen herauszubekommen, was genau während des "Performance-Einbruchs" passiert bzw. warum er aufritt. Folgende Parameter der Datenbank müsste man auf geeignete Art und Weise ermitteln: - Disk-Activity (Logical und Physical) - Wartezyklen / Sperren - Trefferrate für Puffer-Cache - ... Bestimmen kann man das per Oracle Enterprise Manager (Diagnostic Pack, Performance Analyzer) - oder per SQL-Skript (das ist aber sehr umständlich, da sich die Daten ändern und man ggf. den Verlauf benötigt...) Eventuell sind eine oder mehrere Tabellen "fragmentiert". Dafür gibts ein Oracle-Werkzeug (TableSpace-Map) - aber glaube nur im Diagnostic-Pack für den Enterprise Manager (extra lizenzpflichtig!!!). Nach einer Defragmentierung mit dem Tool müssen aber alle Indices neu aufgebaut werden... Wenn du das Tool nicht haben solltest und wenn du willst kann ich aber mal ein SQL-Skript für die Bestimmung der Fragmente pro Tabelle bzw. Index heraussuchen. c) Welche Version hat die Datenbank (8.1.?.?.?) und welche Version hat der Client (8.1.7.?.?) - Die Client-Version sollte immer kleiner order gleich der Server-Version sein - NIEMALS größer. Das kannst du aber zur Not austesten, wenn du das SQL-Statement vom SQL-Plus des DB-Servers ausführst. Ich hoffe da ist was hilfreiches dabei...
  21. Oder alternativ mit =CLng([Feld1])+CLng([Feld2])
  22. Ich nenne einfach mal ein paar Stichwörter zu deiner Frage: - Replikation - Replikationskollisionen (Änderungen des gleichen Datensatzes in beiden Datenbanken) - Netzwerklast - Große Datenmengen - Änderungen am Datenmodell - Firewall, Sicherheit, Verschlüsselung - ... Höchste Performance: - Replikationsarten Ich hoffe das hilft
  23. Man muss nur an der richtigen Stelle suchen: Access 97 Online-Hilfe: Also: MsgBox Screen.ActiveControl.Name
  24. So wie in der Hilfe beschrieben... [hier Access 97/VBA] Noch ein kleines Beispiel? Sub SampleArray() Dim sArray(25, 25) As String sArray(1, 1) = "Test1" sArray(25, 25) = "Test25" Debug.Print sArray(1, 1), sArray(25, 25) End Sub Ich hoffe das hilft.
  25. Den gleichen Spass habe ich schon mal mit einer kleinen Inventardatenbank gemacht. (ca. 15 Tabellen) Frontend ist Access 97. Back-End ist SQL-Server 7.0/2000. Folgendes sollte man aber mal gehört haben: Ganz wichtig: Die Constrains auf der SQL-Server-Datenbank nach dem Import der Daten korrekt setzen (Primärschlüssel, Eindeutige Schlüssel, Fremdschlüssel/Beziehungen, Check-Constrains und die Indices für die Tabellen) 1. Vorsicht bei Autowerten: Im Access werden die Autowerte vor dem Einfügen in die Spalte geschrieben bei SQL-Server erst wenn der Datensatz gespeichert wird. (Kann zu Fehlern bei Dateneingabe in Master/Datail-Formularen führen) 2. Wenn du Felder im SQL-Server in Tabellen oder Sichten hinzufügst oder änderst, so musst du die Tabelle unbedingt neu verknüpfen, da sonst die Felder nicht oder fehlerhaft angezeigt werden. 3. Verknüpfte Tabellen/Sichten nicht zwischen Access-Datenbanken importieren/exportieren, da dabei bestimmte Informationen der ODBC-Verknüpfung verloren gehen. 4. Sichten auf dem SQL-Server sind meist schneller als auf Client-Seite. Aber Verknüpfte SQL-Server Sichten sind im Access nur unter bestimmten Voraussetzungen aktualisierbar (Eindeutige Schlüsselfelder, nur bestimmte Joins, ...) 5. Die Formulare möglichst so gestalten, dass so "wenig wie nötig" Daten übertragen werden (Netzbelastung, usw.) - insbesondere in langsamen Netzen die SQL-Abfragen möglichst auf dem Server ablaufen lassen und nur die Ergebnisse zurückgeben. 6. Das Frontend-mdb sollte nicht schreibgeschützt geöffnet werden, da z.B. der VBA Befehl DoCmd.RunCommand acSaveRecord in einem solchen Fall Fehler verursacht. 7. Sicherheit: Entweder NT-Authentifizierung oder SQL-Server-Authentfizierung - beides hat Vor- und Nachteile. Die Objekt-Berechtigungen lassen sich am besten durch Rollen verwalten. 8. Möglichst neue und gleiche MDACs auf den Clients verwenden (SQL-Server ODBC-Treiber) 9. Während der Umsetzung auf SQL-Server möglichst keine Änderungen am logischen Datenmodell vornehmen. 10. Sowohl Access, als auch SQL-Server definieren zusätzliche Funktionen zum Standard-SQL (T-SQL, VBA). Man kann die SQL-Anweisungen meist nur bei einfachen Abfragen kopieren. ------------ Ich hoffe das hilft.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...