Zum Inhalt springen

Audi

Mitglieder
  • Gesamte Inhalte

    202
  • Benutzer seit

  • Letzter Besuch

Beiträge von Audi

  1. Danke euch!

    Die Lösung mit SQL geht in meinem Fall schlecht, da ich blitzschnell Suchergebnisse brauche, mit SQL alleine war es langsam :schlaf:

    Beim Programmstart werden Daten aus der DB in eine DataTable importiert, dann kann man in diesen Ergebnissen nochmal suchen, die Suche wiederrum läuft im Speicher ab. Die Ergebnisse aus der Suche landen dann in der DataGridView.

    Hab die Lösung :)

    Ich habe einen Vergleich (Filter) gebaut habe, der die doppelten Suchergebnisse beim activieren der CheckBox einfach nicht durchlässt.

  2. Hallo,

    hoffe ihr könnt mir helfen.

    Ich habe ein funktionierendes Programm, in dem man nach Artikeln im Lager suchen kann, nun ist das Problem, dass als Ergebnis Artikel mehrfach ausgegeben werden, weil sie z.B von anderen Lieferanten sind.

    Dies soll mit einer CheckBox und einer Funktion behoben werden, so ist es variabel.

    Wie kann man da am besten vorgehen?

    Kurze Programmeinführung:

    Suchkreterium wird in eine TextBox eingegeben, es wird in einer DataTable gesucht, die Ergebnisse der Suche werden in einer DataGridView angezeigt.

    Muster:

    Artikelnummer; Beschreibung; Lagerort; Lieferant; Preis; usw.

  3. Ich denke nicht, dass es das auf Dauer sein wird, denn ein DBMS Server ist meist leistungsfähiger als ein Client. Access ist für "kleine" Projekte durchaus zu verwenden, für größere sollte man aber eben z.B. auf ein MS SQL umsteigen, wobei man eine Access Datenbank direkt dort importieren kann (andere Alternativen wie mySQL, Postgresql, .... gibt es natürlich auch)

    Habs schon fertig :)

    War einfacher als gedacht, hatte als erstes auch vorgeschlagen es so zu machen, aber da gabs Leute die meinten, es sollte auch SQL mässig zu schaffen sein, nur hat sich unteranderem auch keiner Gedanken über die Kostennutzungsrechnung gemacht.

    Auf jeden Fall würde es mir und allen anderen viel Zeit und Nerven erspart, wenn es gleich Programmtechnisch gelöst worden wäre.

    Großes Dankeschön allen die sich für mich eingesetzt haben und mir helfen wollten!

  4. Ich mache das jetzt Programmiertechnisch, sollte dann um einiges schneller, bzw. blitzschnell gehen :)

    Wollte schon gerne wissen, wie man diese verflixte Abfrage schneller hinbekommt, aber was soll man machen...will ja nicht die ganze DB umbauen...

    Habe es mir so vorgestellt, dass ich die Abfrage von Access beim Programmstart aufrufe, dann werden die Ergebnisse der Abfrage in einer DataTable im RAM gespeichert, in dieser wird dann gesucht und die Suchergebnisse in einer weiteren DataTable ausgegeben, diese liefert die Ergebnisse an eine DataGridView die es dem Benutzer visuel ermöglicht die Artikel zu betrachten und weitere gewünschte Schritte zu unternehmen.

    Fange am Freitag an, mal schauen, wie lange ich brauch :D

  5. Du braucht nur je einen Index in den Tabellen anzulegen, welcher eben die beschriebenen Spalten enthält - wo genau hängts?

    Grüße

    Ripper

    Indizes sind angelegt, nur für die Spalten die gebraucht werden, soll ja so schneller gehen...

    es brachte bei mir aber 0,nix :(

  6. Du braucht nur je einen Index in den Tabellen anzulegen, welcher eben die beschriebenen Spalten enthält - wo genau hängts?

    Grüße

    Ripper

    Am anlegen, kannst mal bitte kurz beschreiben wie du vorgehts und ich sag dir dann woran es hängt, oder woran es lag.

  7. grüßt euch..also ich hab FAST alle Prüfungen (FISI, FIAE, SE, ITSK) und ca. 60 % Lösungsmaterial. Sind um die 300 mb.

    Ihr könnt ja hier mal reinposten WER, WAS GENAU braucht. Oder soll ich alles einfach uppen und ihr pickt euch selbst alles raus?

    Bräuchte die von Sommer 2010 am besten GA1 von FIAW und FISI Rest war ja gleich.

    Bitte an artur.schulz@kopfweb.de schicken

    Wenn Lösungen dabei sind, bitte auch hinzufügen.

    DANKE

  8. vs.

    Ja wie denn nu???

    Jetzt wirds mir auch langsam klar :)

    Momentan wird wohl die Tabelle BESTDOK komplett dursucht werden um die BestDocLiefNr passend zu ArtLiefLiefNr zu finden.

    Indizes auf ARTLIEF.ArtLiefLiefNr und BESTDOK.BestDocLiefNr existieren?

    Ich denke deine Tabellen sind nicht ganz sauber normalisiert:

    Ihr bestellt sicher öfter bei einem Lieferanten - ergo sind "Lieferant" und "Lieferung" (BESTDOK) doch zu trennen, oder?

    Grüße

    Ripper

    Soll ich alle Spalten von den Tabellen aufschreiben???

    Das sind aber in manchen über 30Stk...

    Habe nur wichtige herausgepickt...

    So siehts aus!:-)

    Deswegen auch so lahm :D

    Wäre schon ein großer Vorteil, wenn man direkt zeigt wo er genau suchen muss, mit Indizes funzt das auch bestimmt!

    Bekomme dass nicht hin, kann keine Indizierung auf andere Tabellen machen! Habe schon 2 Anleitungen durch, aber da gibts nichts zum auswählen in anderen Tabellen, nur in der man sich befindet, evt. kannst du was damit anfangen, wie bekomme ich andere Tabellen zur Auswahl?

    Sind schon fast am Zeil, oder :D

  9. Ok, warst fleissig...

    ...

    Grüße

    Ripper

    Ok, warst fleissig..

    Aber das war fast _zu_ ausführlich, aber nicht aussagekräftig genug :)

    Ich sehe wie deine Tabellen aufgebaut sind, weiss allerdings immer noch nicht, wie deine Ergebnismenge aussehen soll.

    (Was soll die Liste nachher liefern? Nicht die Spalten sondern der "Zweck" wäre interessant - Bsp: "Liste von Artikeln je Stückliste, gruppiert nach Stückliste")

    Ebensowenig weiß ich, was ARTLIEF, SARTIKEL und BESTDOK denn genau heissen soll!?

    SARTIKEL = Stücklistenartikel?

    BESTDOK = Lieferant nehm ich an?

    ARTLIEF = Artikelstamm??

    Da würde mir spontan einfallen: WO steht die ID einer Stückliste?

    Natürlich kann ein Artikel von mehreren Lieferanten geliefert werden und wiederum in mehreren Stücklisten benutzt werden.

    Ich denke, deswegen hattest Du das DISTINCT benutzt.

    Aber das Ganze als Liste runterlaufen zu lassen ist ja an sich unsinnig..(nochmal: Zweck deiner Abfrage ist zumindest mir unklar)

    Grüße

    Ripper

    Du warst bis jetzt auch immer fleißig! :uli

    ARTLIEF = Artikel Lieferant, da steht z.B die Artikelnummer, Bestellnummer, Lieferantennummer, Mindestbestellmenge, Rabatt usw. drin.

    BESTDOK = Bestell Dokument, da sind Daten wie: Wann wurde bestellt (Datum), Lieferantname, Anschrift des Lieferanten, KunderNr., Ansprechparter usw. enthalten.

    SARTIKEL = Artikelstamm: Artikelnumemr, Name, Beschreibung, Mengeneinheit, Lagerort usw.

    Die ID der Einzelnen Tabellen ist schwierig zu sagen: In SARTIKEL habe ich als PK z.B Artikelnummer genommen, sonst kann ich keine PKs erstellen, da Redundanzen bestehen...

    In der Tabelle BESTDOK gibt es eine Spalte mit IDs, jeder Zeile ist eine bestimmte Ziffer zugeordnet. Ich gehe da bis jetzt nach der Lieferantennummer, da der Lieferantenname über die Lieferantennummer leicht herauszufinden ist.

    In der Tabelle ARTLIEF sind beide Spalten vorhanden, wie Artikelnummer, die auch in SARTIKEL vorhanden ist und Lieferantenummer, die ja in BESTDOK verfügbar ist. Deshalb habe ich auch über die Spalten alles miteinander Verknüpft.

    Die Ergebnissmenge soll natürlich alle Spalten die angesprochen wurden enthalten, sortiert nach Artikelnummer. Es muss jede Zeile eindeutig sein, also nicht doppelt vorhanden sein.

    Eine Zeile sieht dann so aus:

    Artikelnummer, Bauteilname, Bauteilparameter, Beschreibung, Bestelnummer (Hersteller), ArtikelInfo, EK-Preis, Bestnummer (Distributor), Distributor; Lagerort

    C00 000 014; TransistorXY; GrößeXY; DatenXY; ABC5202; Sanyo; 20,00€; 99100C; Reichelt Elektronik; R2-D2;

    Habe gestern noch die Indizierung versucht, aber es scheint dass schon alles Indiziert ist, so dass es nichts bringt. Wenn ich in der Tabelle in die Entwurfsansicht gehe, dort meine Spalte bzw. Spalten aussuche und dann auf diese Indizierungs-Symbol neben dem PK-Symbol klicke sind schon Indizes vorhanden...

    Den kleinen Performance anstieg habe ich wie schon erwähnt, durch Gruppierung nach "ErsterWert" vom Lieferanten bekommen.

    Und nochwas habe ich entdekt, erst wenn ich die Tabelle BESTDOK berücksichtige wird alles langsam :(

    Bestimmt ist da der Hund :old

    Als mir das Projekt zugeteilt wurde, gab es in einer generierten Access DB schon eine Abfrage um Artikellisten in Excel zu generieren.

    Diese habe ich auch in mein Programm eingebaut, aus dem Grund, weil ich auf ein Kaufmänische DB zugreife, diese ist Access kompatiebel, man kann auf diese DB aber nicht sichtbar zugreifen, deswegen benutze eine extra erstellte Benutzeroberfläche um die Daten sichbar zu machen die man zur Artikelsuche braucht. Das hat auch funktioniert nur eben langsam. Man will von mir jetzt dass das ganze schneller ist, sonst wird die eigentliche Hilfe zu einer sehr Zeitaufwendigen Sache.

    Kann dir die vorherige Abfrage mal posten, da ist noch eine Tabelle (ARTIKELMENGE) zwischen ARTLIEF und SARTIKEL, ka warum das der Ersteller gemacht hat? Diese Tabelle brauche ich nicht, deswegen wurde sie nicht berücksichtigt, die Geschwindigkeit hat sich nicht geändert...

    Ausgabe ist natürlich gleich!

    Zu dieser Abfrage ist noch eine von mir erstellte Suchabfrage dazugekommen, die wird jetzt nicht berücksichtigt, damit man nicht sagen kann, dass es an ihr liegt. Das ganze funktioniert, so dass ich nach beliebigen Begriffen/Teilbegriffen suchen kann. Wie gesagt wird jetzt nicht berücksichtigt, da es jetzt eh langsam ist und ich keine Performance steigerung merke, wenn ich die Suchabfrage noch dazu mache...

    Die DB wurde auch auf den Lokalen Rechner gezogen, hat aber 0,nix an Leistung gebracht! Also gibt es keine Engstelle, zwischen Server und Client :)

    Wenn du möchtest könnte ich die Tabellen so umbauen, dass ich dir die DB schicken könnte, dann hat man 100% Durchblick.

  10. Naja, ich habe keine Ahnung, welche Tabellen Du hast (bzw. was da genau drin steht) und was für eine Ergebnisliste Du haben willst.

    Ich habe 3 Tabellen die ich benutze:

    ARTLIEF

    SARTIKEL

    BESTDOK

    Aus diesen Tabellen brauche ich folgende Infos/Spalten:

    Artikelnummer

    Bauteilname

    Bauteilparameter

    Beschreibung

    Hersteller

    Bestellnummer

    Herrsteller Bestellnummer

    Lieferantname

    Einkaufspreis

    Lagerort

    Diese Spalten befinden sich in folgenden Tabellen:

    Tabelle ARTLIEF:

    ArtLiefArtNr (Artikelnummer)

    ArtLiefBestNr (Bestellnummer)

    ArtLieftEKPreis (Einkaufspreis)

    ArtLiefLiefNr (LieferantNr)

    Tabelle SARTIKEL:

    ArtNr (Artikelnummer)(habe ich als PK)

    ArtName1 (Bauteilname)

    ArtName2 (Bauteilparameter)

    ArtZusInfo1 (Beschreibung)

    ArtZusInfo2 (Hersteller)

    ArtZusInfo4 (Hersteller BestellNr.)

    ArtMatchcode (Lagerort)

    Tabelle BESTDOK:

    BestDocLiefNr (LieferantNr)

    BestDocName1 (Lieferantenname)

    So habe ich die Tabellen miteinander verknüpft:

    SARTIKEL.ArtNr (Artikelnummer) ist mit ARTLIEF.ArtLiefArtNr (Artikelnummer) verbunden

    ARTLIEF.ArtLiefLiefNr (LieferantNr) ist mit BESTDOK.BestDocLiefNr (LieferantNr) verbunden

    Hoffe es ist jetzt besser verständlich:-)

  11. Da wäre die Frage nach den OUTER JOINS und:

    - Welche Spalten benötigst Du wirklich?

    - Indizes angelegt?

    - Liegt die Datenbank auf einer Netzfreigabe?

    - Ist die Abfrage in Access selbst so lahm, oder bremst es erst bei Einbindung in deine C# App?

    Mehr Infomationen wären schon nicht schlecht..

    Grüße

    Ripper

    zu 1: Habe natürlich nur Spalten genommen die ich wirklich brauche, die wurden in voherigen posts veröffentlicht, aber wenn trotzdem Fragen sind...fragen.

    zu 2: Versucht, aber nicht geschaft (evt. könnte man da nochmal anfangen, brauche aber Hilfe)

    zu3: Ja

    zu4: Ich experementiere nur in Access selbst, das Programm bleibt aussen vor, denn es bekommt nur den SQL-Code als String übergeben, bremst auch kaum bzw. nicht der Rede wert.

    zu den OUTER JOINS, die Abfragen sind von mir so wie ich es selbst konnte erstellt worden, Tabellen waren natürlich schon vorhanden.

  12. @Audi:

    Deine Ist/Soll-Analyse ist für mich unverständlich :)

    Wie wäre es wenn Du uns in einfachen Worten beschreiben würdest was Du vor hast?

    Du möchtest irgendwelche Bestelllisten ausgeben?

    Grüße

    Ripper

    Ja so in der Art, ist eigentlich nur eine zusammengestellte Artikelliste, für Mitarbeiter. In dieser werden dann bestimmte Artikel die man z.B zur Hardwareerstellung braucht gesucht. (Das ganze funktioniert über eine Benutzeroberfläche die in C# programmiert wurde, die greift auf eine Access DB zu)

    Das Programm sowie auch die Suche nach Artikeln funktioniert auch singemäss, nur ist die Suche langsam wie sau...das ist auch das eigentliche Problem.

  13. Habe da eine neue Idee weiß aber nicht wie ich es realisieren soll, bzw. was es für ein Befehl ist.

    Ist Zustand:

    Ein Artikel hat X Lieferanten

    Soll Zustand:

    Beim ersten auftreten in der DB soll es in der Ausgabe vorkommen.

  14. Ich fand die Prüfungszeit von GA1 und GA2 viel zu kurz, habe jeweils nur 3 Aufgaben in der Zeit lösen können.

    Muss zur Müdlichen:

    GA1: 41

    GA2: 44

    WISO: 62

    Wichtig für mich wäre zu erfahren wie die Müdliche genau abläuft, kann man sich das Thema selbst aussuchen, üben und vorstellen + Fragen beatworten?

    Oder ist es so dass man Themen vorgegeben bekommt und sich eins von denen herraussucht und es dann vorstellt?

    Ausserdem würde ich gerne wissen, wieviele Punkte ich noch brauche um zu bestehen? Wie wird das gerechtet?

    Danke

  15. Mich würde mal interessieren, wozu der OP lauter Outer Joins macht. Da in der WHERE Bedingung nicht auf NULL abgefragt wird, und auch im Ergebnis keine NULL Werte sein können, da ansonstend er DISTINCT nicht eindampfen kann (NULL immer <> NULL) vermute ich mal, dass ein (deutlich schnellerer) Inner Join das gleiche Ergebnis liefern würde.

    Ob ich Group By oder Distinct verwende ist egal - die Datenbank muss die Ergebnismenge immer sortieren.

    Des weiteren wäre noch eine Definition von "flotter machen" wünschenswert. Millionen von Datensätzen durchzunudel dauert eben seine Zeit. Entweder ich schränke die zu durchsuchenden Sätze ein oder ich gebe der DB mehr Ressourcen, damit sie die Arbeit schneller erledigen kann - nachdem ich das SQL optimiert habe.

    Dim

    Ja genau das ist es ja, wir haben nur 4417 Artikel in der DB und die sollte auch Access schnell zustande bringen können.

    Wenn ich DISTINCT verwende bekomme ich 4417 Datensätze, wenn nicht sind es über 600 Tausend und genau da liegt das Problem, bis der die verglichen hat vergeht viel Zeit :schlaf:

    Wie ist es eigentlich mit z.B Google die Suchmaschine gibt ja ratz fatz mal so paar Mio. Ergebnisse in 1Sec. raus...?

  16. 1) die indizes müssen nicht eindeutig sein, dafür gibts ja die option "Duplikate möglich"

    2) eventuell kannst du das DISTINCT durch geschicktes gruppieren ersetzen, ob das schneller wird musst du testen

    3) inwieweit kann ein artikel mehrfach vorhanden sein? in der SARTIKEL? in der ARTMENGE?

    zu 3:

    Ich habe die Tabelle ARTMENGE in der Abfrage nicht berücksichtigt (ist die gelöschte Tabelle, von der ich gesprochen habe). Die war mit ARTLIEF (Artikel Lieferant) und SARTIKEL (Artikel) nur wegen der ArtNr in SARTIKEL bzw. ARTLIEF verbunden, also weg damit :)

    Jetzt habe ich nur diese Tabellen mit den dazugehörigen Attributen:

    Tabelle ARTLIEF: ArtLiefArtNr (Artikelnummer)(habe ich als PK), ArtLiefBestNr (Bestellnummer), ArtLieftEKPreis (Einkaufspreis), ArtLiefLiefNr (LieferantNr)

    Tabelle SARTIKEL: ArtNr (Art)(habe ich als PK), ArtName1 (Bauteilname), ArtName2 (Bauteilparameter), ArtZusInfo1 (Beschreibung), ArtZusInfo2 (Hersteller), ArtZusInfo4 (Hersteller BestellNr.), ArtMatchcode (Lagerort)

    Tabelle BESTDOK: BestDocLiefNr (LieferantNr), BestDocName1 (Lieferantenname)

    SARTIKEL.ArtNr ist mit ARTLIEF.ArtLiefArtNr verbunden

    ARTLIEF.ArtLiefLiefNr ist mit BESTDOK.BestDocLiefNr verbunden

    Hier noch der SQL-Code dazu:

    
    SELECT art.ArtLiefArtNr, sart.ArtName1, sart.ArtName2, sart.ArtZusInfo2, art.ArtLiefBestellNr, sart.ArtZusInfo4, art.ArtLiefEKPreis, sart.ArtMatchcode, BESTDOKK.BestDocName1
    
    FROM BESTDOKK RIGHT JOIN (SARTIKELL AS sart INNER JOIN ARTLIEFF AS art ON sart.ArtNr = art.ArtLiefArtNr) ON BESTDOKK.BestDocLiefNr = art.ArtLiefLiefNr
    
    
    

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