Aktuelle Zeit: 22.09.2018 09:06

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Autor Nachricht
 Betreff des Beitrags: Re: FindString
BeitragVerfasst: 12.07.2018 11:48 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Velindos hat geschrieben:
Hallo,
Funzt nicht!
Hallo,
Reicht nicht!

SQL-Fehler? Keine Ergebnisse? oder zuviele Ergebnisse?

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FindString
BeitragVerfasst: 13.07.2018 12:35 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo,

Zitat:
Reicht nicht!


natürlich nicht!

Also es werden keine Ergebnisse angezeigt, sprich es kommt nichts zurück!

Anderes muss erst testen!

Gruss ... Velindos!

_________________
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.43 LTS (32/64-Bit)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FindString
BeitragVerfasst: 14.07.2018 08:50 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Ich habe im Post oben im SQL string REGEX statt REGEXP geschrieben, was falsch ist. Ich bekomme es aber trotzdem nicht zum Laufen. Habe das hier versucht: https://stackoverflow.com/a/8338515
aber regexp bleibt undefiniert.
Code:
UseSQLiteDatabase()

Procedure CheckDatabaseUpdate(Database, Query$)
  Result = DatabaseUpdate(Database, Query$)
  If Result = 0
    Debug DatabaseError()
  EndIf
 
  ProcedureReturn Result
EndProcedure

DatabaseFile$ = GetTemporaryDirectory()+"Database.sqlite"

If CreateFile(0, DatabaseFile$)
  CloseFile(0)
 
  If OpenDatabase(0, DatabaseFile$, "", "")
   
    ;If DatabaseQuery(0, "SELECT load_extension('/usr/lib/sqlite3/pcre.so'); ")
    ;Else
    ;  Debug DatabaseError()
    ;EndIf
   
    CheckDatabaseUpdate(0, "CREATE TABLE testtable (id int, txt text, vc varchar)")
    CheckDatabaseUpdate(0, "INSERT INTO testtable (id, txt, vc) VALUES ('1', 'abc 11 de', 'QRS 11 TU')")
    CheckDatabaseUpdate(0, "INSERT INTO testtable (id, txt, vc) VALUES ('1', 'abc 22 de', 'QRS 22 TU')")
    CheckDatabaseUpdate(0, "INSERT INTO testtable (id, txt, vc) VALUES ('1', 'abc 33 de', 'QRS 33 TU')")
   
    q.s = ""
    q + "select * from testtable where "
    ;q + " txt like '%22%' "
    q + " txt REGEXP '.*' "
    If DatabaseQuery(0, q)
     
      cols = DatabaseColumns(0)
     
      s.s = ""
      For i=0 To cols-1
        s + " | " + LSet(DatabaseColumnName(0, i), 12, " ")
      Next
      Debug s
     
      While NextDatabaseRow(0)
        s.s = ""
        For i=0 To cols-1
          s + " | " + LSet(GetDatabaseString(0, i), 12 ," ")
        Next
        Debug s
      Wend
     
      FinishDatabaseQuery(0)
    Else
      Debug DatabaseError()
    EndIf
   
    CloseDatabase(0)
  Else
    Debug "Can't open database !"
  EndIf
Else
  Debug "Can't create the database file !"
EndIf



Ansonsten einfach select * und mit der letzten Funktion von NicTheQuick auf PB Ebene nachfiltern (Kannst natürlich auch noch mit LIKE im SQL auf reines Vorkommen vorfiltern):
Code:
UseSQLiteDatabase()

Procedure CheckDatabaseUpdate(Database, Query$)
  Result = DatabaseUpdate(Database, Query$)
  If Result = 0
    Debug DatabaseError()
  EndIf
 
  ProcedureReturn Result
EndProcedure

Procedure FindStringEx(String.s, StringToFind.s, StartPosition.i = 1, Mode.i = #PB_String_CaseSensitive)
  Protected flag.i = 0, pos.i
  If Mode <> #PB_String_CaseSensitive
    flag = #PB_RegularExpression_NoCase
  EndIf
  Protected StringToFindEscaped.s
  Protected *c.Character = @StringToFind
  While *c\c
    Select *c\c
      Case '\', '^', '$', '{', '}', '[', ']', '(', ')', '.', '*', '+', '?', '|', '<', '>', '-', '&'
        StringToFindEscaped + "\" + Chr(*c\c)
      Default
        StringToFindEscaped + Chr(*c\c)
    EndSelect
    *c + SizeOf(Character)
  Wend
  Protected re.i = CreateRegularExpression(#PB_Any, "\b" + StringToFindEscaped + "\b", #PB_RegularExpression_MultiLine | #PB_RegularExpression_AnyNewLine | flag)
 
  If ExamineRegularExpression(re, String)
    While NextRegularExpressionMatch(re)
      pos = RegularExpressionMatchPosition(re)
      If pos >= StartPosition
        Break
      EndIf
      pos = 0
    Wend
  EndIf
 
  FreeRegularExpression(re)
 
  ProcedureReturn pos
EndProcedure

DatabaseFile$ = GetTemporaryDirectory()+"Database.sqlite"

If CreateFile(0, DatabaseFile$)
  CloseFile(0)
 
  If OpenDatabase(0, DatabaseFile$, "", "")
   
    CheckDatabaseUpdate(0, "CREATE TABLE testtable (id int, txt text)")
    CheckDatabaseUpdate(0, "INSERT INTO testtable (id, txt) VALUES ('1', 'ein K11 ist')")
    CheckDatabaseUpdate(0, "INSERT INTO testtable (id, txt) VALUES ('1', 'keinK11 ist')")
    CheckDatabaseUpdate(0, "INSERT INTO testtable (id, txt) VALUES ('1', 'keinK111 ist')")
   
    q.s =  "select * from testtable "
    If DatabaseQuery(0, q)
     
      cols = DatabaseColumns(0)
     
      s.s = ""
      For i=0 To cols-1
        s + " | " + LSet(DatabaseColumnName(0, i), 12, " ")
      Next
      Debug s
     
      While NextDatabaseRow(0)
        colMatch = #False
       
        s.s = ""
        For i=0 To cols-1
          If FindStringEx(GetDatabaseString(0, i), "K11")
            colMatch = #True
          EndIf
          s + " | " + LSet(GetDatabaseString(0, i), 12 ," ")
        Next
       
        If colMatch
          Debug s
        EndIf
      Wend
     
      FinishDatabaseQuery(0)
    Else
      Debug DatabaseError()
    EndIf
   
    CloseDatabase(0)
  Else
    Debug "Can't open database !"
  EndIf
Else
  Debug "Can't create the database file !"
EndIf

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: FindString
BeitragVerfasst: 14.07.2018 10:51 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Kleiner Tipp mit SQLite...

Man kann auch eine Memory-Datenbank erstellen
Code:
DatabaseFile$ = ":memory:"

Somit braucht man für solche Sachen keine Datei erstellen.

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye