Zum Inhalt springen

Olli_Master

Mitglieder
  • Gesamte Inhalte

    203
  • Benutzer seit

  • Letzter Besuch

Beiträge von Olli_Master

  1. Bis einschließlich Oracle8i gibt es den JOIN-Syntax nicht unter Oracle. Die Oracle-Variante mit der WHERE-Bedingung sollte bei einer "guten" DB-Konfiguration und vor allem korrekt gewählten Indices (insbesondere für die Fremdschlüssel) mindestens genauso schnell sein wie Access. Diese Relation ist abhängig vom Datenvolumen. Bei 100 DS an einem schnellen Desktop-Arbeitsplatz wird Access natürlich schneller sein :)

    Wenns interssiert: Lt. Oracle wird mit der 9er-Version der DB der JOIN-Syntax als Zusatz unterstützt. (nach ANSI/ISO SQL99)

    Oracle Technet News

  2. Unter Windows gibt es z.Z. 2 gängige Formate für Hilfedateien.

    1) WinHelp (*.hlp) (alt)

    2) HTML Help (*.chm) (neu)

    Die ersten basieren werden mit einem Textverarbeitungsprogramm (z.B. Word 97++) geschrieben, als RTF mit speziellen Fußnoten gespeichert und von dem MS Help Workshop (Help Compiler) in eine HLP-Datei geschrieben.

    Die 2. ist (schön) HTML-Basierend und können mit einem beliebigen HTML-Editor geschrieben werden. Zum kompilieren der Hilfe-Datei gibts von Microsoft das Programm "HTML Help".

    Beide Varianten sind sehr mühselig und nicht so ihne weiteres einfach zu pflegen. Das hängt aber sehr vom Umfang und Art der Dokumentation ab (Programmbeschreibung, Referenz, Tutorial, ...). Software gibts auf der Web-Site von Microsoft bzw. als Bestandteil von MS Visual Studio.

    Für Umfangreichere Sachen gibt es spezielle Help-Autorensysteme: z.B. ForeHelp (v.4) kann ich da empfehlen.

  3. AFAIK kann man mit Imaging keine Tiff-Dateien per Kommandozeile drucken.

    Wenn aber auf allen Rechnern der MS Photo Editor (Teil von MS Office xx), dann kannst du den zum drucken nehmen:

    
    "<<Pfad>>\Microsoft Shared\PhotoEd\Photoed.exe" /p "<<pfad>>\test.tif"
    
    

    Er druckt dann natürlich auf den Standarddrucker sofort los - ohne Einstellmöglichkeiten.

  4. Denkanstoss: Wie wird denn ein mehrdimensionales Array im Speicher abgelegt bzw. darauf zugegriffen?

    int **i;

    main()

    {

    i = new int[19][29];

    }

    Das Reservieren des Arrays sollte nicht das Problem darstellen:

    
    int **i;
    
    
    main()
    
    {
    
        int iDim1 = 19;
    
        int iDim2 = 29;
    
    
        i = new int[ iDim1 * iDim2 ];
    
    
        ...
    
    }
    
    
    Aber der Compiler kann aber hierbei nicht wissen, wie groß die erste Dimension des Arrays ist. Daher kann man NICHT schreiben:
    
    int iTest = i[1][1];
    
    

    Also müsste man bei jedem Zugriff anhand der Zeile und Spalte die Position im eindimensionalen Array bestimmen.

    !!!Vorsicht beim verändern der Array-Größe!!!

    Und das Freigeben des Speichers nicht vergessen.

    Alternative : Eine Klasse, die das Array kapselt und den [] - operator überschreibt. Vielleicht gibt es die schon irgendwo?

  5. Da bekomme ich ca. 10000 Datensätze die Minute in die DB.

    Das ist doch schon mal nicht schlecht. (Da bist du mit 3h 40 min dabei)

    Wenn du schneller werden willst, dann musst du herausfinden, warum das ganze so "lange" dauert. Vielleicht liegt das Problem auf Datenbankseite?

    Also:

    Am Zugriff sollte es eigentlich nicht liegen, der native Zugrff (OCI, SQ-LPlus, SQL-Loader) ist erfahrungsgemäß der schnellstmögliche. (PHP wäre in der Textverarbeitung aber bedeutend schneller als VB.)

    Ich denke es liegt an folgenden Punkten:

    - Die Aktualisierung der Indices dauert bei jedem Update zu lang. Daher wäre es günstig die Indices vor dem einspielen zu löschen (Vorsicht!!) und anschließend neu zu generieren.

    - Bei dem Einfügen der Datensätze werden eventuell verschiedene Constraints geprüft (Primärschlüssel, Fremdschlüssel, Eindeutige Schlüssel, usw.)

    Für den Fall, das du weisst, das die Daten 100%tig in Ordnung sind, kann man diese Constraints vorübergehend deaktivieren.

    Könnte das Problem an VB liegen (vielleicht schafft er das auslesen nicht schneller?)

    - Wenn dem so ist, dann kannst du die Daten ja vorher ohne direkten Datenzugriff erstmal in eine "für die Datenbank einfach einlesbares" Format bringen --> SQL-Loader. Dieser ist eigentlich zum Zweck des Einlesens von Massendaten als Werkzeug vorgesehen.

    Frage: Sind die 22 Mio DS der Komplettdatenbestand, oder werden diese zum bestehenden Datenbestand hinzugefügt?

    Ich hoffe das hilft dir.

  6. Grundsätzlich ist es besser bei solchen Datenmengen die Verarbeitung serverseitig laufen zu lassen.

    Ich sehe folgende Alternativen:

    1. VB + SQL-Plus

    Du machst aus der 500MB-Datei ein SQL-Script mit den fertigen SQL-Anweisungen (auf dem Client) und das Script startest du über SQL-Plus (Oracle Client).

    Den Script kannst du wahlweise

    1a) vom Client aus ausführen

    1b) auf Server kopieren (ggf. packen) und dort ausführen

    2. VB + SQL-Loader

    Du machst aus der 500MB-Datei ein Austauschdatei, die via SQL-Loader in die Datenbank geladen werden kann .

    Den Script kannst du wieder wahlweise

    2a) vom Client aus ausführen

    2b) auf Server kopieren (ggf. packen) und dort ausführen

    3. VB App auf dem Server ausführen.

    4. ??? PHP, PLSQL, ... ???

    Welche Variante die beste ist, hängt von deinem Problem ab:

    I. Datensicherheit: Welcher schaden entsteht, wenn der Export aufgrund eines Netzausfalls (o.ä.) abbricht.

    II. Kannst/darfst du serverseitig Oracle Werkzeuge benutzen.

    III. Was genau dauert bei der übertragung so lang? Die Insert-Operation in der DB oder die reine Netzwerkübertragung (langsames Netz)?

    1a und 2a dürften die schnellsten, client-basierten Lösungen sein.

    Ich hoffe das hilft dir.

  7. 
    For Each REL In datasSet.ChildRelations 
    
    out "--" & REL.ChildTable.TableName) 
    
    Next 
    
    

    For Each Element In Gruppe

    [Anweisungen]

    [Exit For]

    [Anweisungen]

    Next [Element]

    Das bedeutet, dass du alle Elemente einer Gruppe (auch Collection oder Auflistung genannt) einzeln durchgehst. REL ist in deinem Fall die Variable, über die du die einzelnen Elemente ansprechen kannst.

    out() ist vermutlich eine Ausgabefunktion, habe ich in VB bisher nicht so gesehen. Ggf. ist es auch eine eigene Funktion?

    Zur Not kannst du OUT durch MsgBox xxx oder Debug.Print xxx ersetzen.

    Ich hoffe das hilft.

  8. Über ODBC sollte das relativ einfach gehen. Aber das "Datenmodell" und die Logik muss in Access wieder hinterlegt werden (Alle Constrains - Primary-Keys, Foreign Keys .. Check, usw.)

    Trigger gibt es in Access ja bekanntlich nicht...

    Felder vom Datentyp BLOB (wenn es die unter Oracle7 schon gibt??), werden nicht per ODBC übernommen.

    Warum sollte man von Oracle auf Access umsteigen ? - vielleicht aus Kostengründen?

  9. Wenn DU das Problem lösen möchtest (und nebenbei etwas lernen willst :) ), dann musst du schon ein wenig Zeit investieren musst. Grundkenntnisse in einer beliebigen Programmiersprache sollten eigentlich reichen.

    - Ich gehe davon aus, dass es um Access 97 geht, richtig?

    - Ich gehe davon aus, dass die Rückmeldung über den Erfolg der Batchdatei uninteressant ist.

    Ich gebe dir ein Anfangsmodul, dass du an deine Bedürfnisse anpassen kannst. Es erstellt eine entsprechende Batch-Datei und führt diese aus. Das <<zusammenbauen>> des Strings für die Batch-Datei musst du schon selbst machen, da es sehr von der Datenbank bzw. dem Formular abhängt, wie du an die Daten herankommst.

    
    Option Compare Database
    
    Option Explicit
    
    
    Const sFileName = "d:\temp\test.bat"
    
    Const sErrorMsg_ras = "Beim Ausführen der Prozedur CreateAndRunBatch ist ein Fehler aufgetreten. Der Vorgang wird abgebrochen."
    
    
    Public Function CreateAndRunBatch() As Boolean
    
    
        CreateAndRunBatch = False
    
    
        On Error GoTo err
    
    
        Dim sRasEntry As String
    
    
        'Eintrag für Batch-Datei erstellen
    
        sRasEntry = "rasdial 0256398785 admin superpasswort"
    
    
        'Batch erstellen
    
        Open sFileName For Output As #1
    
        Print #1, sRasEntry
    
        Print #1, "pause"
    
        Close #1
    
    
        'Batch ausführen
    
        Shell sFileName
    
    
        'Standard-Fehlerbehandlung wieder einschalten
    
        On Error Goto 0
    
    
        'Erfolgreiche Ausführung
    
        CreateAndRunBatch = True
    
        Exit Function
    
    
    err:
    
        MsgBox sErrorMsg_ras, vbExclamation, "Fehler"
    
        On Error Goto 0
    
    
    End Function
    
    

    Ich hoffe das hilft dir weiter.

  10. Das Service-Release sollte es eigentlich nicht sein, was den Fehler verursacht.

    AusgabeIn
    klingt sehr nach Ausführung eines Makros bzw. die Ausgabe einer Tabelle oder Abfrage in eine Datei ??? Wenn hierbei ein Fehler auftritt, dann kann es zu dieser Fehlermeldung kommen.

    Aber die Ursache bekommt man so nicht heraus.

    Vielleicht sollte man die auf dem Rechner ausgeführten Aktionen, die zu dem Fehler führen Schrittweise ausführen und den Fehler (vermutlich die Zeile AusgabeIn) ein wenig genauer untersuchen.

    Möglicherweise ist das gewählte Exportformat nicht vorhanden und es wird versucht eine Datei in dem Format auszugeben(Stichwort: "ISAM").

    Ich hoffe das hilft.

  11. Grundsätzlich dient der Primärschlüssel zur eindeutigen Idendifikation des Datensatzes.

    Wenn eine Datenbank eine durchgehende Nummerierung von Datensätzen über den Primärschlüssel bereitstellen würde, so müsste die DB auch sicherstellen, dass kein Datensatz mehr aus der Tabelle entfernt wird (, da sonst ständig der Primärschlüssel aktualisiert werden müsste - in allen abhängigen Tabellen natürlich !).

    Folglich ist eine automatische durchgehende Nummerierung nicht über den Primärschlüssel zu lösen.

    Als Fallbeispiel aus meinem Projekt: Es werden Rechnungsnummern verteilt. In der Tabelle Rechnung ist der Primärschlüssel das Feld Regnr. Durch dieses Feld wird der Rechnung eine Nummer zugewiesen.

    Da ist es natürlich blöd, wenn nach der Rechnung 17659 plötzlich die Nummer 17665 raus kommt. Das würde buchhalterisches Probleme geben.

    Ich denke, dass ist eine Ansichssache: Du kannst den Bericht doch von 1 bis xx durchnummeriert und mit der "nicht fortlaufenden" Rechnungsnummer als Bezug ausgeben. (So hast du keine neuen Probleme, wenn die Nummerierung jedes Jahr von vorn beginnt :)

  12. Leider gibt es da -- so weit ich das weiss -- keine Bordmittel von Oracle.

    Wenn du die Scripts für alle Tabellen, Views, PLSQL-Packeges usw. brauchst, dann helfen meist nur spezielle Tools weiter.

    z.B. Free TOAD

    Zum generieren der Scripts brauchst du entsprechende Rechte in der Datenbank. Eine Garantie, ob das 100% tig funktioniert gibt es aber bei den vielen Datenbankversionen sowieso nicht!!!

    Für Java-Klassen & Co (ab 8.1.x) werden bestimmt keine Scripts generiert.

    -------

    Für einzelne Objekte kannst du den Oracle Enterprise Manager benutzen (bzw. DBA-Studio). Bei vielen Objekten wird das aber irgendwann ziemlich lästig.

    Ich hoffe das hilft.

  13. Eine Möglichkeit wäre zur Zahl einfach 0x00808080 (hex) oder 8421504 (dezimal) zu addieren. Somit bekommst du zwar nicht die Komplementärfarbe, aber zumeindest sollte in den meisten Fällen lesbar sein. (grau auf weiß bzw. schwarz, usw.)

    Eine andere Möglichkeit wäre, dass du dich auf weiß oder schwarz als Vorderrgrundfarbe festlegst. Dann ermittelst du den Durchschnitt der Farbanteile. Wenn dieser größer 128 ist, dann nimmst du schwarz und sonst weiß.

    Pseudocode:

    
    iHelligkeit = (GetRValue(cColor)
    
                  +GetGValue(cColor)
    
                  +GetBValue(cColor)) / 3;
    
    
    if ( iHelligkeit >= 128)
    
      cColorNeu = 0;
    
    else
    
      cColorNeu = 0xFFFFFF;
    
    
    

    Ich hoffe das hilft...

  14. Kennt jemand ein Programm mit dem man im Batchbetrieb große Bilddateien (bis 200 MB) von TIFF-Rev6 in das DJVU-Format (von AT&T, Lizardtech) konvertieren kann. (Kommandozeilenprogramm genügt - die Batchdatei kann ich selber schreiben)

    Ich brauche ein "echtes" Kommandozeilenprogramm welches auf die Abarbeitung der Konvertierung wartet und im Fehlerfall auch wirklich einen Fehlercode zurückgibt. (bitte kein GUI-Tool á la SlowView)

    Das ganze sollte entweder kostenlos (FreeWare, GNU, etc.) sein oder nur mit geringen Kosten verbunden sein.

    Kennt jemand soetwas oder hat ggf. schon Erfahrungen mit dem DJVU-Format gemacht?

    Danke im Voraus

    Bisher wird die Konvertierung von einem Bearbeiter mit einem GUI-Programm durchgeführt, der nix anderes macht als Datei öffnen, Datei speichern usw. (da wird man wahnsinnig von)

    Das soll nun automatisiert werden.

    ?? Anscheindend gibt es für dieses Format unter WinNT/2000 oder XP keine vernünftigen und kostengünstigen Konverter.

  15. Wenn es eine solche Funktion gäbe, müsste diese ebenfalls die Tabelle "durchgehen", was keine Änderung am Laufzeitverhalten bedeuten würde. In Standard-SQL gibt es keine.

    Wenn du Oracle verwendest, dann kannst du eine PLSQL-Funktion schreiben - da hast du so gut wie gar keinen Performanceverlust, wenn du einen Cursor durchgehst.

  16. Du hast 2 Probleme:

    1. Im SQL Query-Analyzer werdeb T-SQL-Scripts ausgeführt. Hierbei muss jede Anweisung, die einen View erzeugt mit einem "GO" abgeschlossen werden - kein Semikolon!! :eek:

    2. Deine Joins sehen sehr Fehlerverdächtig aus. Da fehlt irgendwie ein kleines Stückchen :)

    Schau mal in der SQL-Server Online-Hilfe unter "CREATE VIEW" nach - da sind einige nützliche Beispiele.

    Das müsste z.B. gehen:

    
    USE datenbankname
    
    GO
    
    create view ski_kund as 
    
    select distinct vorname, nachname, straße, ort, land, plz 
    
    from ski_kund3 
    
    where kategorie = 'skiausrüstung'
    
    GO
    
    

    Hoffe das hilft.

  17. Ein Benutzerkonzept lässt sich sowohl in Access 97 wie auch unter Access 2000 realisieren. Die Benutzerverwaltung ist in der Access Online Hilfe mehr oder weniger gut beschrieben. Allerdings ist Umsetzung und Pflege der Benutzerverwaltung in beiden Versionen relativ umständlich.

    Die Frage aber ist, ob du bei der Web-Anwendung die Access-Benutzerverwaltung verwenden kannst und ob das wirklich sinnvoll ist (ich denke NEIN).

    Bei Web-Anwendungen greift man normalerweise immer mit einem Benutzernamen auf eine Datenbank zu (ODBC oder ADO). Access verträgt natürlich nur eine sehr begrenzt Nutzeranzahl.

    Und zur Jokerfrage: Über ASP und SQL kannst du sowohl Daten abrufen wie auch in die Datenbank einfügen und aktualisieren.

    ABER: Stell dir das aber nicht so einfach vor mit dem "Daten abrufen oder reinschieben". Die gesamte Access-Funktionalität kannst du über ASP natürlich nicht nutzen, da du über eine Schnittstelle auf die Datenbank zugreifst. Alles was im Browser angezeigt wird muss über ASP generiert generiert werden.

    d.h. eerzeugen von HTML-Formulare, Plausibilitätsprüfung via ASP, CSS, HTML-Tabellen

    (Für größere Anwendungen kann das ganz schön Aufwendig werden!!!)

    ----------------------------------

    Ein paar Fragen, die du dir selbst beantworten solltest:

    - Sollen die bestehenden Access-Formulare (sofern vorhanden) im Web verfügbar machen oder nur Daten nach Benutzergruppe angezeigt werden?

    - Wie viele Nutzer werden durchschnittlich/maximal zugreifen?

    - Wie wird das Nutzerverhalten bei den Zugriffen sein (einfache Abfragen, komplexe Abfragen, Massenverarbeitung, ..)

    Alternative: Eventuell ist eine Lösung mit MySQL und PHP doch besser - und billiger?

    Alternative: Wenn bei allen Nutzern "Access 2000" vorhanden ist, dann könntest du die "Datenzugriffseiten" nutzen.

    ----------------------------------

    Fragen?

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...