WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Software (http://www.wcm.at/forum/forumdisplay.php?f=5)
-   -   Daten einer Tabelle in eine Zeile kopieren (Access oder Excel) (http://www.wcm.at/forum/showthread.php?t=147477)

Osmosis 14.10.2004 10:01

Daten einer Tabelle in eine Zeile kopieren (Access oder Excel)
 
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

Karl99 14.10.2004 11:13

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

RStAstl 14.10.2004 12:02

Kreuztabelle in Access
 
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];


wbendl 14.10.2004 12:23

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

RStAstl 14.10.2004 12:49

Nachtrag Kreuztabellenabfrage
 
Ich hab die Kreuztabellenabfrage mit dem Assistenten im Access erzeugt. Der SQL-Code soll hier nur das Ergebnis des Assistenten zeigen.

Karl99 15.10.2004 08:11

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.

Osmosis 15.10.2004 09:41

Zitat:

Original geschrieben von Karl99
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.

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.

Karl99 15.10.2004 11:11

Doch Vorsicht: Bei zu vielen Datensätzen wird Access langsam!

powerman 15.10.2004 13:55

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.

Osmosis 17.10.2004 16:14

Zitat:

Original geschrieben von powerman


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.

Vielen Dank für Dir Hilfe mal vorab.

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag