![]() |
![]() |
|
![]() |
![]() |
|
Software Rat & Tat bei Softwareproblemen |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Senior Member
![]() Registriert seit: 18.04.2001
Ort: Wien
Alter: 50
Beiträge: 130
|
![]() Habe folgendes Problem:
Habe Geräte die öfters zum Reparieren kommen. Dazu habe ich die Felder für Seriennummer & Fehler. Natürlich stehen diese Informationen untereinander in einer Tabelle. Ich möchte nun die zu einer SN gehörenden Fehler in einer Zeile haben. (siehe Bild). Nach dem ich nun mehrere Geräte habe möchte ich das ganze in einer Access Datenbank mit Abfrage Realisieren. gibts da Möglichkeiten ??? lg Osmosis |
![]() |
![]() |
![]() |
#2 |
Veteran
![]() Registriert seit: 05.06.2003
Beiträge: 444
|
![]() Schreib ein Excel-Makro, das im Prinzip aus einer Tabelle den Wert liest und in eine andere Tabelle an eine gewisse Position schreibt. Verwende aber 2 unterschiedliche Blätter deshalb, damit sich nichts überschreibt. Mit einer EOF-Schleife (nicht im folgenden Beispiel enthalten!) sollte diese einfache Makro-Methode kein Problem darstellen.
LG Karl Sub Makro1() Sheets("Tabelle1").Select Range("A2").Select Selection.Copy Sheets("Tabelle2").Select ActiveSheet.Paste Sheets("Tabelle1").Select Range("C2").Select Application.CutCopyMode = False Selection.Copy Sheets("Tabelle2").Select Range("B2").Select ActiveSheet.Paste Sheets("Tabelle1").Select Range("C3").Select Application.CutCopyMode = False Selection.Copy Sheets("Tabelle2").Select Range("C2").Select ActiveSheet.Paste Sheets("Tabelle1").Select Range("C4").Select Application.CutCopyMode = False Selection.Copy Sheets("Tabelle2").Select Range("D2").Select ActiveSheet.Paste Sheets("Tabelle1").Select Range("A5").Select End Sub |
![]() |
![]() |
![]() |
#3 |
Veteran
![]() Registriert seit: 17.09.2000
Beiträge: 224
|
![]() Ein Möglichkeit wäre eine Kreuztabellenabfrage.
Dazu müsstet du aber die Fehler pro SNR durchnummerieren (manuell, in einem Formular auch programmtechnisch machbar). Dann machst du am Besten die Seriennummer und die Fehlernummer (pro Seriennummer) zum Primärschlüssel der Tabelle (so hast du auch gleich verhindert dass die gleiche Fehlernummer öfters pro Seriennummer vergeben wird). In der Kreuztabelle machst du dann die Seriennummer als Zeilenüberschrift und die Fehlernummer als Spaltenüberschrift. Im Kreuzungspunkt kannst du dann denn Fehler (Funktion ErsterWert) anzeigen lassen. Code:
TRANSFORM First(Tabelle.Fehler) AS ErsterWertvonFehler SELECT Tabelle.[Geräte SN], First(Tabelle.Fehler) AS [Gesamtsumme von Fehler] FROM Tabelle GROUP BY Tabelle.[Geräte SN] PIVOT Tabelle.[Fehlernummer pro Geräte SN]; |
![]() |
![]() |
![]() |
#4 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() Hi!
Das ist eindeutig ein Fall für eine Datenbank. Wenn selber programmieren ausscheidet, ist Access das richtige für dich. Für den Anfang genügt es, deine Excel-Tabelle in eine Access-Tabelle zu importieren. Wenn noch weitere Daten zu den Geräten gespeichert sind (oder zukünftig gespeichert werden sollen), getrennte Tabellen für Geräte und Fehler verwenden. Einfache Abfragen und Berichte lassen sich mit Assistenten erstellen. Code zu schreiben wird wahrscheinlich nicht notwendig sein. Wenn du lieber bei Excel bleibst, versuch es mit einer Pivot-Tabelle. Falls das nicht klappt, bleiben noch Makros. @Karl99 Ich nehme an du hast das Makro mit dem Rekorder aufgezeichnet. Solchen Code kann man nur für kleine Aktionen verwenden. Die Verwendung von Select sollte nur in Ausnahmefällen vorkommen. Auf Zellinhalte direkt zugreifen. Das ermöglicht das einfachere verwenden von Schleifen, und die Geschwindigkeit steigt damit um den Faktor 10. Wenn man schon Select verwendet, sollte man zumindest die Bildschirmaktualisierung abschalten. Das schont die Augen und erhöht die Geschwindigkeit. Außerdem reicht eine Schleife bis zum Ende nicht. Es muß in jeder Zeile geprüft werden, um welches Gerät es geht. Abhängig davon werden Daten an die richtige Stelle kopiert. mfg WB |
![]() |
![]() |
![]() |
#5 |
Veteran
![]() Registriert seit: 17.09.2000
Beiträge: 224
|
![]() Ich hab die Kreuztabellenabfrage mit dem Assistenten im Access erzeugt. Der SQL-Code soll hier nur das Ergebnis des Assistenten zeigen.
|
![]() |
![]() |
![]() |
#6 |
Veteran
![]() Registriert seit: 05.06.2003
Beiträge: 444
|
![]() Richtig, wbendl, ich hab´s mit dem Recorder aufgezeichnet, da ich eine schnelle Lösung gesucht habe. Osmisis hat die Datenmenge nicht genannt, d.h. ich bin von einer normalen Menge und einer einmaligen Aktion der Änderung der Datenansicht ausgegangen.
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
![]() Registriert seit: 18.04.2001
Ort: Wien
Alter: 50
Beiträge: 130
|
![]() Zitat:
Hallo an alle, Danke mal im Voraus für die Hilfe. Datenmenge sind ca 20.000 Datensätze ....tendenz steigend. Leider ist es keine enmalige Aktion. Benötige das bei bedarf wöchentlich. Grundlage ist eine Access DB. Hatte gehoft das ich im Inet einen Wizard für dieses Problem finde. Doch leider bis jetzt noch nicht. |
|
![]() |
![]() |
![]() |
#8 |
Veteran
![]() Registriert seit: 05.06.2003
Beiträge: 444
|
![]() Doch Vorsicht: Bei zu vielen Datensätzen wird Access langsam!
|
![]() |
![]() |
![]() |
#9 |
gesperrt
Registriert seit: 08.06.2002
Alter: 76
Beiträge: 4.263
|
![]() hi,
bei der kleinen Menge und richtiger Tabellenaufteilung überhaupt kein Problem. wir haben ca. >400.000 Datensätze und können ganz normal damit Arbeiten. Datensatze: >Tabellen< = Seriennummer; mit Abfrage wie oft schon repariert = Fehlerbezeichnung(1-10); mit Abfrage wie oft der FEHLER 1;2;3; usw.schon aufgetreten ist. = Kunden; mit Abfrage wie oft Fehler beim selben Kunden auftreten. USW......musste aber selber programmiert werden. Accessberater hilft dir dabei. Vorher jedoch ein Konzept auf einen Blatt erstellen. Schreib mir ein eMail: welche Daten du benötigst. Ich werde versuchen dir ein Arbeitsblatt zu erstellen. |
![]() |
![]() |
![]() |
#10 | |
Senior Member
![]() Registriert seit: 18.04.2001
Ort: Wien
Alter: 50
Beiträge: 130
|
![]() Zitat:
Bis jetzt hab ich das ganze mit einer einer Excel Tabelle gemacht, nach SerNo sortiert, dann nach Datum und hab händisch den Fehlern einen Index gegeben. Würde das ganze aber lieber mittel Access und einer Abfrage machen, weich ich meist zwecks einer Auswertung schnell die darauf zugerfein muß. |
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|