Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
InStr-Funktion Gesucht das 4. ";" von links
Gehe zu Seite 1, 2  Weiter
zurück: die andere Formel geht bei mir auch nicht. weiter: Aus Tabelle über Referenztabelle neue Tabellen erstellen 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
snoopy1959
Im Profil kannst Du frei den Rang ändern


Verfasst am:
12. Dez 2012, 09:49
Rufname:

InStr-Funktion Gesucht das 4. ";" von links - InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Guten Morgen,

ich suche die Position des 4. Semikolons in einem String.
Mit der InStringfunktion kann ich das verschachtelt machen, doch übersichtlich ist die Formel in der Abfrage dann nicht mehr.
Code:
Test: InStr((InStr(1;[TAKEOFF_NR1_OPOS].[ASC_4];";"));[TAKEOFF_NR1_OPOS].[ASC_4];";")+InStr(1;[TAKEOFF_NR1_OPOS].[ASC_4];";")


Das ist nur das 2. Semikolon

Weiss jemand von Euch wie ich das besser machen kann??

Danke für Euer KnowHow

Snoopy
JMalberg
Es wird so langsam sinnig ...


Verfasst am:
12. Dez 2012, 11:56
Rufname:
Wohnort: Saarbrücken


AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Schau dir mal die Split()-Funktion an und die Lösungen hier im Forum.
_________________
Gruß
Jürgen

Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie!
Gast



Verfasst am:
12. Dez 2012, 12:04
Rufname:

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Zitat:
ich suche die Position des 4. Semikolons in einem String

Wenn Du zeigst, was Du eigentlich worin suchst, könnte man vielleicht viele Teilaufgaben auf einmal erschlagen:
Intelligente Textanalyse als zusätzlicher Ansatz
snoopy1959
Im Profil kannst Du frei den Rang ändern


Verfasst am:
13. Dez 2012, 10:19
Rufname:

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Guten Morgen Zusammen,

Es geht bei meiner Aufgabe darum den fogenden String in die einzelnen Informationen zu trenen. Die Aufteilung machen die ";" und das "|" zeichen.

Code:
#B#;1009;98.8;119.34;107.1|1009;97.75;119.34;107.1


Gerne hätte ich alle infos am Schluss in einzelnen Feldern, damit ich sie zum Filtern verwenden kann. Type, Semi1, Semi2, Semi3, Semi4, Pipe5, Semi6, Semi7, Semi8.

ich hoffe ich kann Euch Einblick geben in die Aufgabenstellung.

Danke für Euer KnowHow

Snoopy
snoopy1959
Im Profil kannst Du frei den Rang ändern


Verfasst am:
13. Dez 2012, 10:19
Rufname:


AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Guten Morgen Zusammen,

Es geht bei meiner Aufgabe darum den fogenden String in die einzelnen Informationen zu trenen. Die Aufteilung machen die ";" und das "|" zeichen.

Code:
#B#;1009;98.8;119.34;107.1|1009;97.75;119.34;107.1


Gerne hätte ich alle infos am Schluss in einzelnen Feldern, damit ich sie zum Filtern verwenden kann. Type, Semi1, Semi2, Semi3, Semi4, Pipe5, Semi6, Semi7, Semi8.

ich hoffe ich kann Euch Einblick geben in die Aufgabenstellung.

Danke für Euer KnowHow

Snoopy
KlausMz
Moderator Access


Verfasst am:
13. Dez 2012, 10:29
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Hallo,
Zum Filtern sollten die Werte aber nicht in Spalten, sondern in Datensätze abgelegt werden. Wozu aber noch ein Schlüsselfeld benötigt wird.

Die Aufteilung ist nicht ganz so einfach.
Erkläre mal genauer den Aufbau des Strings.
sind das (Komma)Zahlen?
Ist das immer die gleiche Spaltenzahl?
Was ist #B#?

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Gast



Verfasst am:
13. Dez 2012, 11:48
Rufname:

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Als Ansatz, die Aufteilung des Strings in Felder einer Tabelle vorzunehmen:
Code:
Private Sub snoopy()
   Const csInput = "#B#;1009;98.8;119.34;107.1|1009;97.75;119.34;107.1"
   Dim rs As DAO.Recordset
   Dim vArrSemi As Variant
   Dim i As Long
   
   Set rs = CurrentDb.OpenRecordset( _
         "SELECT F1, F2, F3, F4, F5, F6, F7, F8 FROM Zieltabelle", dbOpenDynaset)
   With rs
      vArrSemi = Split(csInput, ";")
      For i = 0 To 3
         Debug.Print vArrSemi(i)
         .Fields(i) = vArrSemi(i)
      Next
      Debug.Print Split(vArrSemi(4), "|")(0)
      .Fields(4) = Split(vArrSemi(4), "|")(0)
      Debug.Print Split(vArrSemi(4), "|")(1)
      .Fields(5) = Split(vArrSemi(4), "|")(1)
      For i = 5 To UBound(vArrSemi)
         Debug.Print vArrSemi(i)
         .Fields(i) = vArrSemi(i - 1)
      Next
      .Close
   End With
   Set rs = Nothing

End Sub
snoopy1959
Im Profil kannst Du frei den Rang ändern


Verfasst am:
13. Dez 2012, 16:30
Rufname:

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Herzlichen DAnk für die Antworten,

Den Code habe ich ausprobiert.
Code:
Private Sub snoopy()
   Const csInput = "#B#;1009;98.8;119.34;107.1|1009;97.75;119.34;107.1"
   Dim rs As DAO.Recordset
   Dim vArrSemi As Variant
   Dim i As Long
   
   Set rs = CurrentDb.OpenRecordset( _
         "SELECT F1, F2, F3, F4, F5, F6, F7, F8 FROM Details", dbOpenDynaset)
   With rs
      vArrSemi = Split(csInput, ";")
      For i = 0 To 3
         Debug.Print vArrSemi(i)
         .Fields(i) = vArrSemi(i)
      Next
      Debug.Print Split(vArrSemi(4), "|")(0)
      .Fields(4) = Split(vArrSemi(4), "|")(0)
      Debug.Print Split(vArrSemi(4), "|")(1)
      .Fields(5) = Split(vArrSemi(4), "|")(1)
      For i = 5 To UBound(vArrSemi)
         Debug.Print vArrSemi(i)
         .Fields(i) = vArrSemi(i - 1)
      Next
      .Close
   End With
   Set rs = Nothing

End Sub


ich habe dazu eine Tabelle namens Details erstellt mit den Feldern F1 - F8
Das Feld 1 ist Memo
Feld 2 und 6 Zahl und die Felder 3,4,5,7,8,9 sind Währung

Trotzdem stopt das Program bei
Code:
.Fields(i) = vArrSemi(i)

mit dem Komentar
"Laufzeitfehler '3020':
Update oder CancelUpdate ohne AddNew oder Edit.

Damit kann ich leider nichts anfangen, da VB nicht wirklich verstehe

Der String mit den viele "," kommt aus der Abfrage "x002_Lagerumschreiber" aus dem Feld ASC_4

Danke für die Aufklährung
Gast



Verfasst am:
13. Dez 2012, 17:18
Rufname:

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Zitat:
"Laufzeitfehler '3020':
Update oder CancelUpdate ohne AddNew oder Edit
Richtig, die AddNew-Anweisung sowie die zugehörige Update-Anweisung hatte ich vergessen.

Nachgetragen und Deine Hinweise ergänzt:
Code:
Private Sub snoopy()
   Dim db As DAO.Database
   Dim rsTarget As DAO.Recordset
   Dim rsSource As DAO.Recordset
   Dim vArrSemi As Variant
   Dim i As Long
   
   Set db = CurrentDb
   Set rsSource = db.OpenRecordset("SELECT ASC_4 FROM x002_Lagerumschreiber", dbOpenForwardOnly)
   Set rsTarget = db.OpenRecordset( _
         "SELECT F1, F2, F3, F4, F5, F6, F7, F8 FROM Details", dbOpenDynaset)
     
   Do While Not rsSource.EOF
      With rsTarget
         vArrSemi = Split(rsSource.Fields(0), ";")
         .AddNew
         For i = 0 To 3
            'Debug.Print vArrSemi(i)
            .Fields(i) = vArrSemi(i)
         Next
         'Debug.Print Split(vArrSemi(4), "|")(0)
         .Fields(4) = Split(vArrSemi(4), "|")(0)
         'Debug.Print Split(vArrSemi(4), "|")(1)
         .Fields(5) = Split(vArrSemi(4), "|")(1)
         For i = 5 To UBound(vArrSemi)
            'Debug.Print vArrSemi(i)
            .Fields(i) = vArrSemi(i - 1)
         Next
         .Update
      End With
      rsSource.MoveNext
   Loop
   
   rsTarget.Close
   rsSource.Close
   Set rsTarget = Nothing
   Set rsSource = Nothing
   Set db = Nothing
End Sub

Statt der von mir einfach und willkürlich vergebenen Feldnamen F1, F2 ... solltest Du aber besser "sprechende" Bezeichnungen verwenden.
KlausMz
Moderator Access


Verfasst am:
13. Dez 2012, 17:30
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Hallo,
ich würde es vorziehen, keine einzelnen Felder anzulegen, sondern jeweils ein Datensatz.
Gerade im Hinblick auf die gewünschte Filterung.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Gast



Verfasst am:
13. Dez 2012, 17:45
Rufname:

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

??
In der Zieltabelle werden doch Datensätze angelegt (pro Ausdruck in der Quellabfrage einer).

Wie legt man einzelne Felder an - von einer Änderung der Tabellendefinition abgesehen?
KlausMz
Moderator Access


Verfasst am:
13. Dez 2012, 17:53
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Hallo,
er schreibt ja:
Zitat:
Gerne hätte ich alle infos am Schluss in einzelnen Feldern, damit ich sie zum Filtern verwenden kann.
Wenn jetzt aber ein Datensatz mit 8 Feldern entsteht kann nicht so einfach nach Werten gefiltert werden, die in einem der 8 Felder vorkommen.
Daher könnte man auf die Idee kommen, es wäre besser die 8 Werte in je einem Datensatz in einem Feld zu speichern. In der Zieltabelle würden also je Datensatz der Quelle 8 DS in der Zieltabelle entstehen. Wobei eines der Felder als Schlüsselfeld dienen muss.

Ob das sinnvoll ist, hängt aber davon ab, was und wie gefiltert werden soll.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.


Zuletzt bearbeitet von KlausMz am 13. Dez 2012, 18:03, insgesamt einmal bearbeitet
GastAusBerlin
Gast


Verfasst am:
13. Dez 2012, 17:54
Rufname:

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Hallo

wenn deine felder nicht string sind müsstest du aber ggf die währungen anpassen

Code:
       For i = 0 To 3
            if i = 0 then
            'Debug.Print vArrSemi(i)
            .Fields(i) = vArrSemi(i)
            else
             .Fields(i) = eval(vArrSemi(i))
         Next


gilt auch für die untere for/next-Schleife

mfg
Daniel
Kawensmann
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Dez 2012, 10:52
Rufname:

AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Hallo,

das geht doch auch einfacher:

Code:
Private Sub snoopy()
   Dim db As DAO.Database
   Dim rsTarget As DAO.Recordset
   Dim rsSource As DAO.Recordset
   Dim vArrSemi As Variant
   Dim i As Long
   
   Set db = CurrentDb
   Set rsSource = db.OpenRecordset("SELECT ASC_4 FROM x002_Lagerumschreiber", dbOpenForwardOnly)
   Set rsTarget = db.OpenRecordset( _
         "SELECT F1, F2, F3, F4, F5, F6, F7, F8 FROM Details", dbOpenDynaset)
     
   Do While Not rsSource.EOF
      With rsTarget
         vArrSemi = Split(Replace(rsSource.Fields(0), "|", ";"), ";")
         .AddNew
         For i = 0 To 7
            .Fields(i) = vArrSemi(i)
         Next
         .Update
      End With
      rsSource.MoveNext
   Loop
   
   rsTarget.Close
   rsSource.Close
   Set rsTarget = Nothing
   Set rsSource = Nothing
   Set db = Nothing
End Sub


Gruß,
Kawensmann
Kawensmann
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Dez 2012, 11:02
Rufname:


AW: InStr-Funktion Gesucht das 4. ";" von links - AW: InStr-Funktion Gesucht das 4. ";" von links

Nach oben
       Version: Office 2010

Ein Feld unterschlagen Smile:

Code:
Private Sub snoopy()
   Dim db As DAO.Database
   Dim rsTarget As DAO.Recordset
   Dim rsSource As DAO.Recordset
   Dim vArrSemi As Variant
   Dim i As Long
   
   Set db = CurrentDb
   Set rsSource = db.OpenRecordset("SELECT ASC_4 FROM x002_Lagerumschreiber", dbOpenForwardOnly)
   Set rsTarget = db.OpenRecordset( _
         "SELECT F1, F2, F3, F4, F5, F6, F7, F8, F9 FROM Details", dbOpenDynaset)
     
   Do While Not rsSource.EOF
      With rsTarget
         vArrSemi = Split(Replace(rsSource.Fields(0), "|", ";"), ";")
         .AddNew
         For i = 0 To 8
            .Fields(i) = vArrSemi(i)
         Next
         .Update
      End With
      rsSource.MoveNext
   Loop
   
   rsTarget.Close
   rsSource.Close
   Set rsTarget = Nothing
   Set rsSource = Nothing
   Set db = Nothing
End Sub
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
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: Zeitstrahl in Access abbilden, Ideen gesucht 4 Heiko03 1147 11. Dez 2011, 17:05
Nouba Zeitstrahl in Access abbilden, Ideen gesucht
Keine neuen Beiträge Access Tabellen & Abfragen: "Liegezeiten" berechnen. Ansatz gesucht. 2 nakoda 507 01. Jun 2011, 10:38
nakoda "Liegezeiten" berechnen. Ansatz gesucht.
Keine neuen Beiträge Access Formulare: Hauptformular mit Abfragen erstellen und Links 3 Chrissy85 810 31. März 2011, 14:36
KlausMz Hauptformular mit Abfragen erstellen und Links
Keine neuen Beiträge Access Formulare: Auswahlfelder eines Registers links anordnen 5 Zeon 291 17. Okt 2010, 21:15
kyron9000 Auswahlfelder eines Registers links anordnen
Keine neuen Beiträge Access Tabellen & Abfragen: Funktion gesucht - Datum aus Timestamp extrahieren 2 wurst-peter 2461 07. Mai 2010, 00:14
Gast Funktion gesucht - Datum aus Timestamp extrahieren
Keine neuen Beiträge Access Tabellen & Abfragen: Lösung in Sql gesucht 5 Muenster36 400 07. Okt 2009, 22:52
Muenster36 Lösung in Sql gesucht
Keine neuen Beiträge Access Tabellen & Abfragen: Einfügen von PDF Links 1 Philly-z 1223 03. Sep 2009, 10:59
ebs17 Einfügen von PDF Links
Keine neuen Beiträge Access Tabellen & Abfragen: Sortierung von 'von rechts nach links' in Auswahlabfrage 12 fizlipuzli 615 11. Aug 2009, 21:35
MiLie Sortierung von 'von rechts nach links' in Auswahlabfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Aktualisierungsabfrage: Aktualisieren "Links(...)" 2 Vyrus_0711 814 05. Jan 2009, 11:33
Vyrus_0711 Aktualisierungsabfrage: Aktualisieren "Links(...)"
Keine neuen Beiträge Access Tabellen & Abfragen: Vorschläge für Struktur für Datenbank gesucht 2 readymaker 2032 07. Okt 2008, 16:06
Marco S. Vorschläge für Struktur für Datenbank gesucht
Keine neuen Beiträge Access Tabellen & Abfragen: Access Nachhilfe gesucht - Raum Münster - oder online 1 Mario H 819 28. Aug 2008, 16:20
KlausMz Access Nachhilfe gesucht - Raum Münster - oder online
Keine neuen Beiträge Access Formulare: Links externe Dateien aus Explorer auswählen und speichern 6 aquarius1000 3353 20. Apr 2008, 10:13
aquarius1000 Links externe Dateien aus Explorer auswählen und speichern
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Access Tabellen