Zum Inhalt springen

tuxfriend

Mitglieder
  • Gesamte Inhalte

    46
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von tuxfriend

  1. Hier würde ich noch einen Halbsatz zu den nötigen Punkten schreiben. Auch hier noch ein Halbsatz um zu spezifizieren, was für Dokumente das sind. Ich vermute mal es geht um automatisierten Rechnungsdruck u.ä., das solltest du mit aufnehmen, dann wir der Kontext klarer. Hier vielleicht noch die Technologie der Schnittstelle angeben, über die du deine Komponente in die bestehende Software integrierst. Das Verhältnis zwischen Analyse und Design kommt mir persönlich etwas komisch vor ... ich würde hier etwas weniger Analyse und etwas mehr Design schätzen, kommt aber auch auf das Projektumfeld an. Projektumfeld: Hier ist es vor alem wichtig, ob du selber in der Firma arbeitest, in der du dieses Projekt umsetzt (dann würde ich die Analysephase für deutlich zu lang halten, da du die Prozesse in der Regel kennen wirst) oder wird das Projekt für eine Fremdfirma um (dann denke ich ist die Dauer der Analyse gar nicht so unrealistisch). Wenn es einen solchen Punkt nicht explizit gibt, würde ich ihn mit in die Projektbeschreibung aufnehmen. Vielleicht können ja ein paar Essener sagen, wie sie das gemacht haben. Ich hatte dafür einen extra Punkt im Antrag. Gruß Nils
  2. Hallo, ohne große ahnung von PHP kann ich dir sagen, das der Fehler ORA-01036 bedeutet, dass du versucht einen Wert an eine Variable zu binden, die in deinem Statement nicht vorkommt. Bind Variablen müssen im Statment durch die Notation :Variable kenntlich gemacht werden. Das ist in deinem oci_parse Aufruf aber nicht geschehen. In anderen Sprachen muss man bei Bind Variablen auch kenntlich mach ob es sich um eine Input oder Output Variable handelt. Das sind zwei Fehler die mir auffallen. Mit Rückabewerten aus PL/SQL Code musste ich zum Glück noch nie arbeiten. Ich persönlich weiß keinen Weg, wie das funktionieren könnte. Evtl. indem du die aufgerufene Stored Procedure einen geöffneten Cursor zurückgeben lässt ?.?
  3. Eigentlich haben Trigger keine eigenen Rechte, wenn innerhalb eines Triggers aber auf Datenbankobjekte zugegriffen wird, dann geschieht dies mit den Rechten des Benutzers dessen Aktion den Trigger ausgelöst hat. Wenn jetzt dein aktiver Benutzer "A" auf eine Sequenz zugreifen will, auf die er keine Rechte hat, gibt das natürlich ein Problem. Was deine langen Zeichenketten angeht: 1. Der Datentyp VARCHAR2 kann Zeichenketten bis 4000 Zeichen speichern. Hierbei ist es allerdings wichtig, dass du wie im von dir geposteten Link beschrieben mit Bind Variablen arbeitest. Bind Variablen haben unter Oracle den interessanten Effekt, das der SQLParser das Statement bei der 2ten - xten Ausführung wiedererkennt und es kein zweites mal scannt sondern nur noch die neuen Werte für die Bind Variablen einfügt. Das bringt gerade bei langen Statements, die sich oft wiederholen riesige Performancegewinne. 2. Solltest du tatsächlich Felder haben, die mehr als 4000 Zeichen enthalten, müßtest du hierfür den Datentypen CLOB verwenden. Wie PHP mi diesem umgehen kann, kann ich dir aber leider nicht sagen. Gruß Nils
  4. Hallo, für das was du tun möchtest gibt es in C++ zusätzlich zu private und public noch die Zugriffsvariante protected. Auf diese Attribute und Methoden hat dann die Basisklasse und alle von ihr abgeleiteten Klassen Zugriff. Alle anderen müssen draußen bleiben. Gruß Nils
  5. Hallo, dieser Fehler tritt normalerweise dann auf, wenn du aus einem Cursor alle Records gelesen hast. Möglich, dass ein select into, das kein Ergebnis liefert auch eine solche Exception verursacht. select matchcode, debitor, kreditor from konten into tmpMatchcode where matchcode = :OLD.matchcode; Dann könnte der Fehler in dieser Anweisung liegen und zwar wenn kein Datensatz mit matchcode = :OLD.matchcode zurückgegeben wurde. Das würde ich erstmal testen. Ansonsten poste doch bitte mal den Code deines Triggers. Gruß Nils
  6. ACK! Trotzdem hast du nicht unbedingt Recht. Wenn ich zum Beispiel eine Software habe, die auf einem Server läuft, kann ich unterschiedliche Lizenzmodelle anbieten. Beispiele sind concurrent user, named user, oder eben auch eine Version, die ich nur auf einer Serverhardware installieren darf. Wenn mein Kunde ein so großes System mit meiner Software betreibt, dass er mehrere Maschinen braucht, dann will ich als Zulieferer schließlich auch etwas davon abhaben. Unter bestimmten Umstände ist das gerade für große Firmen ein sehr gutes Lizenzmodell. --SCHNIPP-- So, jetzt noch etwas zur technischen Seite: falls ihr ein System zukauft achtet darauf, das wirklich nur relativ statische Werte genommen werden. Ich hatte neulich den Fall, dass die IP Adresse zur Berechnung einer ID herangezogen wurde. Ich hab mich echt gewundert, als das schöne System plötzlich den Geist aufgab nur weil es in einem anderen Netz hing. ) Dann hast du einen ärgerlichen Kunden.
  7. Hallo, es gibt zwei Möglichkeiten, eine Excel Datei durch ein externes Programm zu bearbeiten: Zunächst einmal wäre da das Component Object Model, eine sprachunabhängige Schnittstelle für Winows basierte Programme Alle Microsoft Programme bieten COM Objekte, mit denen du arbeiten könntest. Bemühe mal google und msdn.com mit Begriffen wie COM, C++, Excel, Automation, ... Ausserdem gäbe es da noch die Möglichkeit über SQL. Kein Witz: du kannst im Windows ODBC Manager eine User DSN für Excel Dateien anlegen. Das eignet sich aber eher für den Zugriff auf bestehende Dateien. Ich denke COM ist für dich das Mittel der Wahl. Die MFC bietet soweit ich weiß auch C++ Kapselungen der COM Klassen. so mußt du dich nicht erst wissenschaftlich damit beschäftigen. Hoffe das hilft. Gruß Nils
  8. Hallo, auch wenn deine Frage etwas allgemein sind will ich mal eine etwas verbindlichere Antwort riskieren. Ein (Fach-) Abi hilft dir auf jeden Fall auch schon bei der Bewerbung. Viele Firmen bevorzugen Abiturienten bei der Einstellung gerade in IT Berufen. Was den Zeugnisnoten angeht sind Mathematik und Englisch sehr wichtig. Auch Deutsch sollte man nicht vergessen, da man auch als Programmierer entgegen aller Vorurteile Kundenkontakt hat! Das Berufsbild Fachinformatiker umfasst nicht nur Programmierung sondern auch Planung und Support von Software. Das unterscheided uns von den Freaks, die Nachts im Keller sitzen und wild auf einer Tastatur rumhacken. Aus meiner Erfahrung sage ich 50% Programmierung, 40% Planung und 10% Support. Wenn du eine eigene Firma gründen willst brauchst du einen größeren Betriebswirtschaftlichen Hintergrund als ihn eine Ausbildung bietet. In diesem Fall vielleicht erst Abi, dann Ausbildung an Studium. Deine Chancen auf einen Ausbildungsplatz und folgenden Job sind auf jeden Fall < 100%. Wieviel kleiner hängt vor allem von dir selbst ab. Die Zeit als jeder der C++ sagen konnte einen Job als Programmierer bekommen hat sind vorbei. Eine Aussage darüber, wieviel Geld man verdient macht keine Sinn, das schwankt von Region zu Region, von Firma zu Firma, ... Ich hoffe das konnte dir ein bisschen weiterhelfen. Gruß Nils PS.: Ich bin jetzt im dritten Ausbildungsjahr, und bin ziemlich zufrieden mit meiner Arbeit. Obwohl dir das sicher nicht weiterhilft.
  9. Hallo, Du solltest dir die Frage stellen warum das SQL Statement so lange dauert. Unter Umständen hast du von einem "normalen" View keinerlei Vorteile. Und materialized views benötigen zusätzlich Speicherplatz. Wenn du dein Problem genauer schilderst fällt vielleicht hier jemandem eine bessere Lösung ein.
  10. tuxfriend

    Suse 9.2 ==> 9.3

    Hallo, also beim update von Suse 9.2 auf Suse 9.3 gab es in der Professional Variante wohl noch so einige Bugs, die lagne aber alle mehr im Bereich ärgerlich als produktionsgefährdend. Bei mir war zum Beispiel plötzlich QT nicht mehr im ldconfig. Folge KDE sah plötzlich sch... aus. Auf einem Server wäre mir das nicht wirklich wichtig. Von dem Problem mit XFS habe ich auch gehört, da solltest du also etwas aufpassen. Das Update von 9.3 auf 10.0 hat allerdings bei mir perfekt funktioniert. Da du von einem Server sprichst spekuliere ich mal auf ein RAID 1 und rate dir: Spiegelplatte ziehen, updaten, wenns schief geht recovery starten. Wenn es ein wirklich wichtiges System ist sollte dein Chef vielleicht das Geld in den Enterprise Server investieren. Der ist in der Paketauswahl dann ähnlich konservativ wie Debian bzw. Slackware dafür aber eben auch entsprechend stabiler. Kostet allerdings ne Kleinigkeit, dafür kann man Novell in den Hintern treten wenns nicht läuft.
  11. Hallo, mir ist noch nicht ganz klar, wie du feststellen willst, welche where Bedingungen wann wegfallen sollen. Wenn vor dem Absetzen des Statements klar ist, welche where Bedingungen greifen und welche nicht kansst du mit dem dynamic sql package von Oracle deine Sql Statements dynamisch erzeugen. Infos zu dynamic sql siehe hier Ansonsten mußt du wohl die where Bedingung entsprechend formulieren, wie vonAxlHammer schon gepostet. Gruß Nils
  12. Hallo, da du den Client in VB Programmieren willst gehe ich mal davon aus, dass du auch die Datenbank auf einem Windows aufsetzen willst. Dann braucht du den Windows x86 Installer. Gruß Nils
  13. Hallo, kannst du wirklich garantieren, dass zwischen Straße und Hausnummer ein eindeutiger Trenner steht, der an keiner anderen Stelle des Datenfeldes auftaucht? Oder aber ist die Hausnummer wirklich immer die letzten zwei Stellen? Nur wenn eine dieser zwei Bedingungen zutreffen kann man das ganze automatisieren, sonst läuft es auf Handarbeit hinaus. Wenn du dann noch das DBMS mitteilst, fällt jemandem hier vielleicht sogar eine existierende Funktion ein. Gruß Nils
  14. Hallo, es wäre interessant, das RDBMS zu kennen, aber die Funktion MAX gibt bei vielen in einem select statement den Maximalwert der gewählten Spalte zurück. Für Datumsfelder ist das das aktuellste Datum select MAX(Creationdate) from Addresstable Jetzt baust du dieses select noch in dein update statement ein: update Addresstable set AField=SomeValue where Creationdate = select MAX(Creationdate) from Addresstable Wenn mehere Datensätz mit gleichem Datum in der Tabelle stehen und dieses Datum der Maximalwert ist, werden alle aktualisiert. Gruß Nils
  15. Wie das mit den Transaktionen funzt hat Amstelchen ja schon beantwortet. Der Oracle ODBC Treiber bringt normalerweise wenig Performance Verlust. Es kommt nur darauf an was man damit tut und wie man es tut. Hast du schon mal versucht, inserts direkt über den Oracle Enterprise Manager bzw. das SQL Plus Worksheet auszuführen? Die von dir angegebnen Zeiten deuten meiner Meinung nach auf ein Performance Problem in euerer Datenbank hin. Laufen beim insert irgendwelche Trigger ab? Wenn ja sollte man sich die vielleicht mal ansehen. Dann solltest du deinen Chef mal wegen eines Oracle Schulungskonzeptes anhauen. Für Programmierer die sich im Bereich Oracle spezialisieren ist eine OCI Schulung doch ziemlich wichtig. Ausserdem braucht ihr wohl einen Admin, der fit ist in Sachen Oracle Wartung und Tuning. Ansonsten habt ihr an dem System glaub ich nicht lange freude. 10 bis 100 Datensätze sollten weder in PL/SQL noch über normale ODBC Transaktionen ein Problem sein. Ich hatte schon mit Imports von 5000 bis 10000 Datensätzen zu kämpfen und dafür im Schnitt unter 1 sek. gebraucht. Sql*Loader ist genial! Wie oben beschrieben: Das scheint mir nicht an ODBC zu liegen. Versuch mal mit oracle trace festzustellen, was da auf Datenbankseite passiert und mache die inserts tatsächlich übers Worksheet. Dann hast du jegliche ODBC Probleme ersteinmal zur Seite geschoben. Falls dein Chef einverstanden ist, kannst du die Ergebnisse ja mal veröffentlich. Bin zwar Programmierer und kein DBA aber vielleicht kann hier ja sonst jemand helfen. Gruß Nils
  16. Hallo, hast du schonmal mit der Anzahl der commits die du ausführst experimentiert? Wenn auf jedes einzelne insert ein commit folgt, verlangsamt das den Prozess genauso wie wenn du nur nach dem komplett erfolgten import ein commit absetzt. Im ersteren Fall weil jeder einzelne Datensatz seperat gescrieben wird, im zweiten Fall weil die Redo Logs unendlich groß werden. Hier müsstest du mit Transaktionen arbeiten. Ich würde mit commits alle 100 - 1000 Datensätze experimentieren. Ausserdem ist PL/SQL was den import von Massendaten angeht auch nicht immer die schnellste Lösung. Das ist dann bei mir immer der Punkt wo ich zum einem unserer Oracle Spezies gehe und mir etwas stricken lasse, das direct über OCI Direct Path arbeitet, das macht nämlich der SQL Loader auch und der ist nun wirklich ziemlich das Maximum an Performance. Gruß Nils
  17. Lotus Notes hat eine C API. Dokumentation findest du hier. http://www-10.lotus.com/ldd/notesua.nsf/0/a5c4ea439f76ddc085256e5a00584110?OpenDocument vieleicht hilfts dir ja. gruß nils
  18. eine Möglichkeit: bool hasdigit(int inzahl, inziffer) { int zahl = inzahl; while zahl>0 { int akt; akt = zahl % 10; if (akt == infziffer) return true; else zahl = (zahl-akt)/10; } return false } Ist ungetesteter C++ Code (hab hier gerade keinen Compiler). zahl % 10 liefert dir den Rest einer Division durch 10 und somit die letzte Stelle eines beliebigen ganzen Zahl. Diese kannst du dann prüfen. Durch subtrakion des Restes erhälst du eine Zahl, die durch 10 teilbar ist. Diese division schneidet genau eine Stelle ab und du kannst mit der nächsten weitermachen. hth gruß nils
  19. tuxfriend

    Fallstudie

    Die Frage ist, ob du wirklich einen echten Anwendungsserver, also eine voll ausgestattete Middleware brauchst. Die gibt es z.B. von Oracle und IBM, einfach mal bei diesen beiden nachschauen. Kosten aber auch eine Stange Geld. Eine vergleichbare Struktur kannst du z.B. auch mit einem Tomcat Servlet Container aufbauen. Hier wäre die Struktur dann folgendermaßen: Datenbank = Backend --> Tomcat mit Programmierten JavaServlets = Middleware --> Webserver z.B. mit Java Server Pages --> Browser. Das geht natürlich sinngemäß auch ohne Java, indem du den Tomcat durch eine CGI Applikation ersetzt, und dann auf dem Webserver PHP oder ASP oder oder oder als Skripte laufen läßt. Middleware und "Artverwandtes" bringt eine saubere Trennung der einzelnen Schichten einer großen Applikation mit sich. - Im Hintergrund läuft eine Datenbank - In der Mitte eine Schnittstelle, die Zugriffe auf dieses Backend zur Verfügung stellt -dann kommt die Anwendungslogik, die festlegt welche Eingaben der Benutzer wann machen darf -und schließlich das Frontend, in deinem Fall HTML
  20. <ironie>Deswegen funktioniert SAP ja auch so hervorragned </ironie> Normalerweise normalisiert man bis zur 3. Normalform. Alles was danach kommt ist mit bisher in der Praxis noch nicht begegnet, zugegebenermaßen gehören Mamutsysteme wie SAP bei mir nicht dazu. Ich kenne aber z.B. das Datenmodell von Apertum und anderen mittleren WaWis, das ist bei weitem nicht so normalisiert, so wie ich das sehe nur bis zu besagter 3. NF. Die vierte würde ich mir denn bei solchen Systemen schon noch wünschen aber dann ist auch Schluß. Ich denke eigentlich, dir würde auch die 3. NF reichen. Man muß sich immer auch überlegen, das Queries mit vielen joins auch leicht mal etwas langsam werden. Da ist es gelegentlich angeraten etwas weniger zu Normalisieren. Und eine Tabelle die außer dem Primärschlüssel nur ein einziges Attribut hat ist eigentlich nur dann nötig, wenn man schon eine Erweiterung des Datenmodells im Kopf hat, in der diese Tabelle mehrere Attribute bekommen würde. Gruß Nils
  21. 1.7 habe ich anders: Betrag - 2% Skonto + 400 + 25% +15% = ??? 10900+x (habe die Ergebnisse nicht) Die 2 Prozent Skonto zieht die Beispielfirma aus der Aufgabe ihrem Zulieferer ab, die 400 € Beschaffungskosten entstehen ebenfalls der Beispielfirma, dann noch 25% Gemeinkostenzuschlag und du hast den Beschaffungspreis der Waren für die Firma, dann 15% Gewinnzuschlag drauf und fertig is. 2.2 habe ich genauso gerechnet. Ist aber wiedermal ein Beispiel für die weitgehende Realitätferne dieser Aufgaben. 30 Gig für 4000 Dokumente: lachhaft!
  22. Hallo, Die Funktion pos(substr, string) gibt dir den Index des ersten Vorkommens von substr in string zurück. Konkret: delim = pos(',', ed_name.text); Dann einfach den String vom Anfang bis delim-1 auslesen und du hast den Namen. Der String von delim+1 bis ende ergibt dann den Vornamen. Geht über die copy funktion, die als Parameter den Startindex, die Anzahl der auszulesenden Zeichen und den auszulesenden String erwartet. Ich habe gerade kein Delphi zur verfügung und bin mir hier über die Reihenfolge nicht mehr ganz sicher. Die Anzahl der Zeichen, die du für den Vornamen auslesen mußt ist: count=length(ed_name.text)-delim. Ich hoffe, dass hilft dir. Gruß Nils
  23. tuxfriend

    ERM-Modell

    Hallo, ich werde mal meine "Gegenvorschlag" veröffentlichen. Siehe Angehängte Dateien mit ERM und Datenbankmodell. Ersteinmal solltest du dir genau überlegen, welche Attribute du überhaupt unterbringen mußt. Du nimmst in deinem Diagramm Attribute an, die in der gegebenen Universalrelation nicht vorhanden sind (z.B. Name und Vorname des Studenten, Anfangs- und Endtermin des Kapitels, u.ä.). Mach es dir nicht unnötig schwer. Dann zum Ermitteln der Relationen: Vielleicht hilft folgender Ansatz: Nimm dir ersteinmal alles was wie ein Primärschlüssel aussieht. Das sind für mich ersteinmal nur die StudentID, die FachID und die TutorID. Dann schau dir 1:1 Zuordnungen zu genau diesen Schlüsselkandidaten an und du kommst auf folgende Verteilung: 1. Der Student mit einzigem Attribut StudentID 2. Das Fach mit den Attributen FachID und Dem zugeordneten Buch 3. Der Tutor mit TutorID und Mailadresse. Zwischen Tutor und Fach besteht laut gegebner Universalrelation eine 1:m Beziehung. Ein Tutor unterrichtet mehrere Fächer, jedes Fach hat aber nur genau einen Tutor. Zugegebenermaßen etwas vereinfacht, aber genau das, was diese Relation hergibt. Zwischen Student und Fach besteht eine m:n Beziehung. Jeder Stundent kann Prüfungen in mehreren Fächern ablegen, in jedem Fach können mehrere Studenten geprüft werden. In diese Beziehung passen auch alle Attribute, die in den oben genannten Entitäten noch nicht einbezogen sind: Ein bestimmte Prüfung für ein Fach geht über ein bestimmtes Kapitel, findet an einem bestimmten Datum in einem bestimmten Raum statt und führt zu einem Bestimmten Ergebnis. Soweit ersteinmal die Beziehungen zwischen der einzelnen Entitäten. Jetzt der Schritt vom ERM zum Datenbankmodell: Jede Entität erhält eine Relation (= eine Tabelle) folglich gibt es die Tabellen Studenten, eine Tabelle Faecher und eine Tabelle Tutoren, jeweils mit dem oben genannten Primärschlüssen. Ausserdem werden m:n Beziehungen mit einer eigenen Relation bedacht. Also gibt es eine Tabelle Prüfungen mit den oben schon genannten Attributen. Die Beziehung dieser Tabelle zu den Tabellen Studenten und Faecher wird jeweils über ein Fremdschlüsselattribut (im Diagramm durch gestrichelte Linie gekennzeichnet) hergestellt. Die Wahl des Primärschlüssels ist hier etwas komplexer, es ist in jedem Fall ein zusammengesetzter. Wenn man jeweils nur das aktuellste Ergebnis speichern will ist der Primärschlüssel zusammengesetzt aus Student, Fach und Unit. Sollen bei Wiederholung der Prüfung mehrere Ergebnisse gespeichert werden, kommt noch das Datum hinzu. Die 1:m Beziehung zwischen Tutor und Fach wird über einen Fremdschlüssel gelöst. Gruß Nils
  24. Hallo, Sorry, mit dem MS ActiveDirectory kenne ich mich nicht aus, habe bisher nur mit openLDAP und ein wenig mit dem Novell E-Directory gearbeitet. Was das setzen des Passwortes betrifft, dafür gibt es im LDAP Schema das Attribute userPassword. Versuch doch einfach mal, dich mit einem existierenden und funktionierenden LDAP Browser (findest du z.B. hier: www-unix.mcs.anl.gov/~gawor/ldap/) auf den Server zuzugreifen. Wenn das funktioniert weißt du zumindestens, dass Benutzername und Passwort OK sind. Was die akzeptierte Üergabe von Passwörtern betrifft, kann ich dir nicht weiterhelfen. LDAP ist halt ein Protokoll, die Implementationen sind schon sehr unterschiedliche. Gruß Nils
  25. Die Anmeldung, durch die der LDAP Server feststellt, ob du überhaupt berechtigt bist, Operationen auf ihm durchzuführen schlägt bei dir offensichtlich fehl. Hierzu fallen mir spontan 3 Möglichkeiten ein: 1. Der DN (CN=Stefan Poersel, ou =...) existiert auf dem Server nicht 2. Das zu diesem DN übergebene Passwort ist falsch 3. Es gibt durchaus LDAP Server, die eine unverschlüsselte Übergabe des Passwortes nicht akzeptieren. Auch das könnte zu einem entsprechenden Fehler führen. Gruß Nils

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