FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 
smartsuitefaq.martinholz.de Foren-Übersicht

Suchfunktion von bestimmten Datensätzen

 
Neues Thema eröffnen   Neue Antwort erstellen    smartsuitefaq.martinholz.de Foren-Übersicht -> Approach
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
bibu
User


Anmeldungsdatum: 24.05.2006
Beiträge: 10
Wohnort: Olching -Bayern-

BeitragVerfasst am: Mi 24.05.2006 19:42    Titel: Suchfunktion von bestimmten Datensätzen Antworten mit Zitat

Hallo Zusammen,

habe folgendes Probelm:

In einer Datenbank habe ich verschiedene Kundennummern. Die Kundennummer eines Kunden kommt auch mehrmals vor.

Jetzt wollte ich einen Bericht erstellen, mit denen Kundennummern die mehr als 5x in dieser DB vorkommen.

Wie kann ich nun die zutreffenden Kundennummern filtern?

Ich benötige einerseits alle DS der zutreffenden Kundennummern der Kunden, also der Datensatz soll so oft erscheinen wie oft er vorhanden ist bzw. ich benötige für einen anderen Zweck den zutreffenden DS nur einmal.

Gruß

Bibu Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Martin
Site Admin


Anmeldungsdatum: 31.12.2004
Beiträge: 389
Wohnort: Düsseldorf

BeitragVerfasst am: Do 25.05.2006 07:02    Titel: Re: Suchfunktion von bestimmten Datensätzen Antworten mit Zitat

bibu hat folgendes geschrieben:
Jetzt wollte ich einen Bericht erstellen, mit denen Kundennummern die mehr als 5x in dieser DB vorkommen.

Wie kann ich nun die zutreffenden Kundennummern filtern?


z.B. über SQL (siehe: http://smartsuitefaq.vol4u.de/forum/viewtopic.php?t=203)

bibu hat folgendes geschrieben:

Ich benötige einerseits alle DS der zutreffenden Kundennummern der Kunden, also der Datensatz soll so oft erscheinen wie oft er vorhanden ist


Ich habe das Script und die Beispieldatei aus dem o.a. Thread auf Deine Bedürfnisse angepasst. Falls Du ODBC benutzt geht das mit dem von Karl-Heinz beschriebenen Weg noch schneller.

Code:
Sub KundenHaeufigkeit
  Dim VergleichKundenNr As Long
  Dim Haeufigkeit As Long
  Dim i As Long, KundenNrListe List As Long
 
  ' Inputbox zur Abfrage der gesuchten Häufigkeit
  Dim Suchanzahl As Long, Eingabe As String
 
  Eingabe$ = Inputbox("Suche nach Kunden, die mehr als n-mal vorkommen", "Häufige Kunden finden")
  Suchanzahl& = Clng(Eingabe$)
 
  ' Suche definieren
  Dim Verbindung As New Connection
  Dim Suche As New Query
  Dim Ergebnis As New ResultSet
 
  If Verbindung.ConnectTo("DBase IV") Then
    Set Suche.Connection = Verbindung
    Suche.TableName = CurrentDocument.Tables(0).Path & CurrentDocument.Tables(0).TableName
    Suche.SQL = "SELECT Kunde FROM """ & Suche.TableName & """ " & CurrentDocument.Tables(0).TableName & " ORDER BY Kunde"
    Set Ergebnis.Query = Suche
    If (Ergebnis.Execute) Then
      VergleichKundenNr = Ergebnis.GetValue("Kunde")
      Do
        Kundennummer = Ergebnis.GetValue("Kunde")
        If Kundennummer = VergleichKundenNr Then
          Haeufigkeit = Haeufigkeit + 1
        Else
          VergleichKundenNr = Ergebnis.GetValue("Kunde")
          Haeufigkeit = 1
        End If
       
        If Haeufigkeit = Suchanzahl Then
          i = i + 1
          KundenNrListe(i) = Kundennummer     
        End If
       
      Loop While Ergebnis.NextRow
    End If
  End If
 
  ' Testen ob Datensätze vorhanden sind
  Dim Test As Long
  Forall n In KundenNrListe
    Test = Test + 1
  End Forall
 
  If Test = 0 Then
    Messagebox "Keine entsprechenden Datensätze gefunden"
    End
  End If
 
  ' Suche für den Bericht ausführen 
  Call CurrentWindow.FindAll
  Dim RelevanteKunden As New Find
  Call RelevanteKunden.And("Kunde", KundenNrListe(1))
  If i > 1 Then
    For k = 1 To i
      Call RelevanteKunden.Or("Kunde", KundenNrListe(k))
    Next
  End If
  Call CurrentWindow.FindSort(RelevanteKunden)
End Sub


erweiterte Beispieldatei unter: http://smartsuitefaq.vol4u.de/download/MehrereVerkaeuferProKundeFinden.zip

bibu hat folgendes geschrieben:

bzw. ich benötige für einen anderen Zweck den zutreffenden DS nur einmal.


??? Wie jetzt den zutreffenden Datensatz ???
Es soll doch nach mehreren gesucht werden. Shocked
_________________
FAQ gelesen?
=> http://smartsuitefaq.martinholz.de/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden AIM-Name Yahoo Messenger MSN Messenger
bibu
User


Anmeldungsdatum: 24.05.2006
Beiträge: 10
Wohnort: Olching -Bayern-

BeitragVerfasst am: Fr 26.05.2006 20:52    Titel: Wie gebe ich das ein? Antworten mit Zitat

Hallo Martin,

danke für Deine schnelle Antwort.

Jetzt geht es an die Umsetzung.

Wie gebe ich das in Approach ein? Habe mit SQL noch keine Erfahrungen.

Gruß

Bibu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Martin
Site Admin


Anmeldungsdatum: 31.12.2004
Beiträge: 389
Wohnort: Düsseldorf

BeitragVerfasst am: Sa 27.05.2006 05:40    Titel: Re: Wie gebe ich das ein? Antworten mit Zitat

bibu hat folgendes geschrieben:
Habe mit SQL noch keine Erfahrungen.


Kurze semantische Einführung:
SQL = Structured Query Language
Lotus Script = eine Art "Programmiersprache" um nicht vorhandene Funktionen in den Anwendungen der SmartSuite einzubauen und/oder Abläufe zu automatisieren.

Was ich oben gepostet habe ist ein Lotus Script, welches exakt eine Zeile SQL enthält:
Code:
"SELECT Kunde FROM """ & Suche.TableName & """ " & CurrentDocument.Tables(0).TableName & " ORDER BY Kunde"


Damit dieses Script in Deiner Datenbank funktioniert muss es angepasst werden.

Zuerst öffnest Du Deine Datenbank und wechselst in den Entwurfsmodus. Dann öffnest Du den Script-Editor mittels [Bearbeiten]-[Script & Makros]-[Script Editor anzeigen].

Nun kopierst Du das gepostete Script einfach in den Script Editor. (markieren, STRG-C, STRG-V). Dabei wird ein neues "Sub" mit dem Namen "Kundenhaeufigkeit" angelegt.

Nun geht es an das Anpassen an Deine Datenstruktur.

Wenn Deine Kundennummern als "Long" definiert sind (max. 10 Stellen und kleiner 2.147.483.647) können die Typen so bleiben. Passt die Kundennummer nicht in dieses Schema, müssen folgende Variablen umdeklariert werden:

VergleichKundenNr As String (oder ggf. Currency)
KundenNrListe List as String (oder ggf. Currency)

Dann geht es an die Feld- und Tabellennamen. Besteht die Datenbank aus nur einer Tabelle (eine DBF-Datei) muss an den Tabellen nichts geändert werden. Das gilt auch für den Fall mehrerer verbundener DBF, sofern die Kundennummer in der ersten Tabelle steht.

Steht die Kundennummer in der zweiten Tabelle (zweite DBF) muss jedes Vorkommen von Tables(0) in Tables (1) geändert werden.

In meinem Beispiel steht die Kundennummer im Feld "Kunde". Heisst das Feld mit der Kundennummer bei Dir z.B. "KDNr" ist jedes Vorkommen von "Kunde" durch "KDNr" zu ersetzen.

Beispiel
Angenommen Du hast zwei verbundene DBF und das Feld mit der Kundennummer heisst "KDNr" und befindet sich in der zweiten DBF, dann muss die Zeile:
Code:
Suche.SQL = "SELECT Kunde FROM """ & Suche.TableName & """ " & CurrentDocument.Tables(0).TableName & " ORDER BY Kunde"
so aussehen:
Code:
Suche.SQL = "SELECT KDNr FROM """ & Suche.TableName & """ " & CurrentDocument.Tables(1).TableName & " ORDER BY KDNr"


Genauso ist jede Zeile anzupassen.
Wenn Du nun das Script ausführst (F5) sollte ein kleines Fenster aufpoppen, in dem Du die Anzahl der gescuhten Kunden eingibst (z.B. 5). Nach einem Klick auf "OK" werden nur die entsprechenden Datensätze angezeigt. Das gilt dann für alle Ansichten (z.B. den von Dir gewünschten Bericht)

Möchtest Du das Script über eine Schaltfläche starten, erstellst Du diese und klickst mit der rechten Maustaste darauf. Dann wählst Du im Register "Makros" die Schaltfläche "Makros definieren". Dann klickst Du auf "Neu", gibst dem Makro einen Namen z.B. "KDNrHaeufigkeit" und löscht die ggf. vorgegebenen Zeilen. Dann gehst Du in die erste Zeile und wählst "Ausführen" und das auszuführende Script (Sub KundenHaeufigkeit):


Nun klickst Du auf Fertig, und weist der Schaltfläche bei "Bei Klick" das soeben erstellte Makro zu.

Puhhh .... ich hoffe ich habe nichts vergessen.
_________________
FAQ gelesen?
=> http://smartsuitefaq.martinholz.de/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden AIM-Name Yahoo Messenger MSN Messenger
bibu
User


Anmeldungsdatum: 24.05.2006
Beiträge: 10
Wohnort: Olching -Bayern-

BeitragVerfasst am: Mo 29.05.2006 10:38    Titel: Fehlermeldung "Could not open Table Antworten mit Zitat

Hallo Martin,

habe das Skript so von Dir übernommen. Meine Kundennummer hat einen anderen Namen gehabt, habe dies aber über ein berechnetes Feld mit dem Namen "Kunde" gelöst.

Wenn ich mit F5 das Skript starte erscheint auch die Eingabeaufforderung, jedoch danach der Fehlerhinweis "Could not open Table".

Das Skript bleibt an der Zeile 22 stehen.


An was kann das liegen?

Gruß

Bibu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
vamp
Neuer User


Anmeldungsdatum: 31.03.2006
Beiträge: 8

BeitragVerfasst am: Fr 23.06.2006 22:23    Titel: Datensätze filtern Antworten mit Zitat

Hallo ich muss mich hier mal einklinken,
bin in Sachen Script ungeboren also Neuling.
Das ganze scheint aber meinem Problem auch nahe zukommen.
Ich haben auch eine Kundendatenbank mit der ich verschiedene Aktionen durchführen möchte, bis jetzt haben ich jede Aktion über Makro und einfache Suche mir Anzeigen lassen (Datensatz liste) also mit Button Rückrufe Heute -- alle Rückrufe heute , Button Termine alle ... .. . usw., jetzt war mir die Idee gekommen per Kontrallkästchen (Hackenkästechen Aktiv = ja (logisches Feld) ) mir je nach Bedarf die Datensätze die Angezeigt werden sollen zusammen zustellen (z. B. Rückrufe - Termine - alle der letzten 14 Tage - zum letzten Satz ---- und dan auf Zeigen Button.
Jedoch per Befehle Makro´s bekomme ich es nicht hin oder ich habe was übesehen oder geht sowas nur per Script ??????
Wenn mir einer Helfen kann wäre Echt SUPER

DANKE schon mal Wink Question
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    smartsuitefaq.martinholz.de Foren-Übersicht -> Approach Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht 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.


Powered by phpBB © 2001, 2002 phpBB Group
Protected by Anti-Spam ACP