Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Kniffliger Update Befehl
zurück: Notenberchnung weiter: Zeichen in Spalte einfügen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
galaxy
Im Profil kannst Du frei den Rang ändern


Verfasst am:
13. Sep 2007, 17:14
Rufname:

Kniffliger Update Befehl - Kniffliger Update Befehl

Nach oben
       Version: Office 2003

Hi,

Ich habe folgendes Problem in einer Tabelle meiner Datenbank.
(Die _ Zeichen dienen nur der Formatierung in diesem Forum)

Ich bekomme eine Datei welche in diesem schlechten Format vorliegt:
Code:
Spalte1__Spalte2__Spalte3
AAA ___Wert1___Wert1
________Wert2___Wert2
________Wert3___Wert3
BBB____Wert1___Wert1
________Wert2___Wert2
...
Ich lade diese Datei in eine Access Datenbank da ich keine manuellen Aenderungen vornehmen moechte.

Das Ergebnis was ich gerne haette ist:
Code:
Spalte1__Spalte2__Spalte3__Spalte4
AAA ___Wert1___Wert1___AAA
________Wert2___Wert2___AAA
________Wert3___Wert3___AAA
BBB____Wert1___Wert1___BBB
________Wert2___Wert2___BBB
...
Also eine durchgehende Spalte4 welche aus den lueckenhaften informationen der Spalte1 besteht. Immer wenn ein neuer Wert in Spalte1 auftaucht soll dieser in Spalte 4 geschrieben werden.

Moechte das gerne mit SQL loesen. Kann mir dabei bitte jemand helfen???
Shai
Access-Profi


Verfasst am:
14. Sep 2007, 00:58
Rufname:
Wohnort: Bremen


AW: Kniffliger Update Befehl - AW: Kniffliger Update Befehl

Nach oben
       Version: Office 2003

Warum soll eigentlich die erste Spalte so bleiben, wie sie ist?

Wie hälst Du eigentlich die Daten auseinander, die vorne keine Kennung haben? Gibts da eine versteckte ID, Typ Autowert? Oder ist die Übergabedatei eine Textdatei?
Wenn es diese ID gibt, dann könnte es eine Lösung geben.

Wie wäre es mit einer Routine, um die Daten gleich ordentlich einzulesen?

_________________
Gruß
Wilfried

Habe ungern das letzte Wort - finde lieber Feedback dort.
galaxy
Im Profil kannst Du frei den Rang ändern


Verfasst am:
14. Sep 2007, 08:07
Rufname:

AW: Kniffliger Update Befehl - AW: Kniffliger Update Befehl

Nach oben
       Version: Office 2003

Ich bekomme die Daten in diesem "schrottigen" Format:
Code:
Spalte1__Spalte2__Spalte3
AAA ___Wert1___Wert1
________Wert2___Wert2
________Wert3___Wert3
BBB____Wert1___Wert1
________Wert2___Wert2
Dabei ist mir ganz egal was mit der ersten Spalte passiert. Ich will einfach nur die Datensatze fuellen (Zeile 2,3 und 5 in meinem Beispiel) mit den fehlenden Werten
(Also in Zeile 2,3 soll AAA und in 5 BBB) ob das nun in einer neuen Zeile passiert oder nicht ist mir relativ egal. Aber genau da haengt das ganze.

Ich kann also auch eine ID beim import der Datei in Access mit anlegen lassen (AutoID) Aber ich weiss nicht was mir das ganze bringen soll!

Danke fuer Tipps im voraus
Shai
Access-Profi


Verfasst am:
14. Sep 2007, 10:19
Rufname:
Wohnort: Bremen

AW: Kniffliger Update Befehl - AW: Kniffliger Update Befehl

Nach oben
       Version: Office 2003

Du hast mich falsch verstanden. Ich wollte eigentlich wissen, warum Du nicht in der ersten Spalte den entsprechenden Wert aus dem vorherigen Satz übernehmen willst, sondern auf die Lücken bestehst. Seis drum.

Anfangs dachte ich mir, es könnte so funktionieren:
Code:
UPDATE Testtabelle1 AS T1 
SET    T1.Spalte4 = (SELECT T2.Spalte1
                     FROM   Testtabelle1 AS T2
                     WHERE  T2.AutoID <= T1.AutoID
                     AND    T2.Spalte1 > "");
Aber Access meldet:
Zitat:
Operation muss eine aktualisierbare Abfrage verwenden
Aber es geht doch, und zwar so:
Code:
UPDATE Testtabelle1
SET    Spalte4 = DMax("Spalte1","Testtabelle1",
                      "[AutoID]<=" & AutoID & " AND [Spalte1]>''")

_________________
Gruß
Wilfried

Habe ungern das letzte Wort - finde lieber Feedback dort.
galaxy
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Sep 2007, 10:32
Rufname:

AW: Kniffliger Update Befehl - AW: Kniffliger Update Befehl

Nach oben
       Version: Office 2003

@Shai:

Das funktioniert wirklich, aber es ist sehr langsam. Bei kleinen Dateien geht es problemlos aber bei grossen schmiert mir Access ab. Also es braucht wirklich eine Ewigkeit. Kann man das irgendwie beschleunigen??

Oder gibt es eine bessere Loesung?

Danke fuer Tipps
Shai
Access-Profi


Verfasst am:
18. Sep 2007, 11:10
Rufname:
Wohnort: Bremen

AW: Kniffliger Update Befehl - AW: Kniffliger Update Befehl

Nach oben
       Version: Office 2003

Ja es gibt eine andere Lösung, diese basiert auf VBA.
In einer Schleife durchläufst du die Datensätze und manipulierst die Daten.
Code:
    Dim Dbs         As DAO.Database
    Dim Rs          As DAO.Recordset
    Dim strSpalte1  As String
   
    Set Dbs = CurrentDb
    Set Rs = Dbs.OpenRecordset("Testtabelle", dbOpenDynaset)
    With Rs
       .MoveFirst ' den ersten Datensatz holen
        While Not .EOF ' EOF = Ende der Datensätze
            If !Spalte1 > "" Then ' Spalte 1 sichern
                strSpalte1 = !Spalte1
            End If
            .Edit ' Datensatz editieren
            !Spalte4 = strSpalte1
            .Update
            .MoveNext
        Wend
    End With

_________________
Gruß
Wilfried

Habe ungern das letzte Wort - finde lieber Feedback dort.
galaxy
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Sep 2007, 13:11
Rufname:

AW: Kniffliger Update Befehl - AW: Kniffliger Update Befehl

Nach oben
       Version: Office 2003

@Shai

Der Code funktioniert irgendwie nicht. Er schreibt in die Spalte 4 immer den selben Wert und ignoriert dabei die Aenderung die in Spalte 1 auftreten kann. Das SQL von dir funktionierte hingegen einwandfrei. Kann es sein das im Code irgendetwas fehlt??
(Ich glaube der link zur ID fehlt. Denn wenn ich auf die Tabelle direkt gucke (Also ohne Query) dann sind die Daten nicht mehr nach der AutoID geordnet. Deshalb schreibt er mir falsche Werte in die Spalte 4. Er listet naemlich erst alle Zeilen auf wo in Spalte1 etwas steht und dann kommen erst alle wo Spalte 1 leer ist. Somit wird der letzte Wert aus Spalte1 in alle Zeilen in Spalte 4 geschrieben.)
Ich muesste glaube ich zuerst die Zeilen nach der ID ordnen. Dann duerfte dein Code funktionieren. Kannst du mir bitte sagen wie?

Zudem habe ich ein Makro das Queries laufen laesst. Wie kann ich denn diesen Code gezielt an einer Stelle in meinem Makro ausfuehren?

Danke fuer Tipps
Shai
Access-Profi


Verfasst am:
18. Sep 2007, 17:54
Rufname:
Wohnort: Bremen


AW: Kniffliger Update Befehl - AW: Kniffliger Update Befehl

Nach oben
       Version: Office 2003

Ja klar, das funktioniert nur, wenn die Daten nach AutoID in der richtigen Reihenfolge geladen werden.
Ja, ich kann Dir sagen, wie das sortiert wird:
Code:
    Dim Dbs         As DAO.Database
    Dim Rs          As DAO.Recordset
    Dim strSpalte1  As String
    Dim strSQL      As String
   
    strSQL = "SELECT * FROM Testtabelle ORDER BY AutoID"
    Set Dbs = CurrentDb
    Set Rs = Dbs.OpenRecordset(strSQL, dbOpenDynaset)
    strSpalte1 = ""
    With Rs
usw. Rest wie oben.
_________________
Gruß
Wilfried

Habe ungern das letzte Wort - finde lieber Feedback dort.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: SQL -> "UPDATE tbl" 8 Soniqe01 791 05. Dez 2008, 01:58
KlausMz SQL -> "UPDATE tbl"
Keine neuen Beiträge Access Tabellen & Abfragen: Update - Zeilenumbruch und Datum einfügen 1 Gast 608 02. Dez 2008, 18:21
KlausMz Update - Zeilenumbruch und Datum einfügen
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Befehl 6 Gast 383 22. Okt 2008, 22:29
jens05 SQL Befehl
Keine neuen Beiträge Access Tabellen & Abfragen: "UPDATE" löscht Datensätze?! 8 Gast 384 16. Okt 2008, 12:28
Gast "UPDATE" löscht Datensätze?!
Keine neuen Beiträge Access Tabellen & Abfragen: update der tabelle 2 Kirsy 306 28. Aug 2008, 09:32
Kirsy update der tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: Format Befehl wird plötzlich nicht mehr erkannt! 1 kaineanun 1613 06. Aug 2008, 11:22
steffen0815 Format Befehl wird plötzlich nicht mehr erkannt!
Keine neuen Beiträge Access Tabellen & Abfragen: Fehler in Update: Fehler beim Kompilieren -> Methode n. g 1 Mindjogger 590 14. März 2008, 17:51
Mindjogger Fehler in Update: Fehler beim Kompilieren -> Methode n. g
Keine neuen Beiträge Access Tabellen & Abfragen: Wo baue ich bei einem Insert Befehl die Where Bedingung ein? 5 Steffen29 503 07. Dez 2007, 15:05
Willi Wipp Wo baue ich bei einem Insert Befehl die Where Bedingung ein?
Keine neuen Beiträge Access Tabellen & Abfragen: Problem mit UPDATE in Access und externer anwendung. 1 Zauberzunge 492 04. Dez 2007, 17:54
Willi Wipp Problem mit UPDATE in Access und externer anwendung.
Keine neuen Beiträge Access Tabellen & Abfragen: Hilfe beim erstellen einer UPDATE Abfrage 1 coste 485 02. Nov 2007, 08:18
stpimi Hilfe beim erstellen einer UPDATE Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Problem mit UPDATE in Access 3 Sebolus 693 26. Okt 2007, 14:17
Willi Wipp Problem mit UPDATE in Access
Keine neuen Beiträge Access Tabellen & Abfragen: UPDATE | einen Wert x 16% 1 al-d82 612 21. Jan 2007, 20:57
stpimi UPDATE | einen Wert x 16%
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln