Struktur / ForEach

Anfängerfragen zum Programmieren mit PureBasic.
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo Kiffi,

so, habe jetzt den Code und die Lib soweit angepasst, dass ich Deinen Code weiter testen kann.

Mir ist jedoch aufgefallen, dass bei folgenden Codezeilen Verzerrungen entstehen:

Code: Alles auswählen

                If StringField(Record1(), ListIndex(ColumnInfo1()), Chr(10)) <> StringField(Record2(), ListIndex(ColumnInfo1()), Chr(10))
                  Debug "Tabelle: " + Tableinfo1()\Name + " / Spalte: " + ColumnInfo1()\Name
                  Debug StringField(Record1(), ListIndex(ColumnInfo1()), Chr(10)) + " / " + StringField(Record2(), ListIndex(ColumnInfo1()), Chr(10))
                  Debug ""
Fogendes wird im Debugger angezeigt:
Tabelle: BANKEN / Spalte: STR
2879.55 / 1879.56

Richtig wäre jedoch:
Tabelle: BANKEN / Spalte: Bruttowert
2879.55 / 1879.56

D.h. hier ist die Spalte um eins weitergerutscht.
"STR" ist ein zu weit. Davor ist der "Bruttowert"

Könntest Du hier nochmal Hilfestellung geben.

Doch, die Geschwindigkeit... :D Wahnsinnig schnell...

Echt klasse.
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

TheSaint hat geschrieben:Mir ist jedoch aufgefallen, dass bei folgenden Codezeilen Verzerrungen entstehen:
seltsam, bei mir verrutscht da nichts. Wie geschrieben, ich habe zwei
Access-MDBs miteinander verglichen. Du machst das mit Firebird, korrekt?

Ich habe mir die aktuelle Version jetzt mal heruntergeladen und installiert.
Gibt es da keine GUI, mit der man Datenbanken erstellen kann (Freeware
bevorzugt)? Womit machst Du das?

Oder kannst Du mir 2 kleine Test-Datenbanken schicken, mit denen man
das nachvollziehen kann?

Grüße ... Kiffi
a²+b²=mc²
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo Kiffi,

vielen Dank für Deine Antwort.
seltsam, bei mir verrutscht da nichts. Wie geschrieben, ich habe zwei
Access-MDBs miteinander verglichen. Du machst das mit Firebird, korrekt?
Ja, mache ich. Alle Daten aus der Datenbank werden genauso wie bei Access ausgelesen und verarbeitet.

Nur hier scheint bei Deinem Code etwas nicht zu passen, wenn mir erlaubt ist dies zu schreiben.

Code: Alles auswählen

Debug "Tabelle: " + Tableinfo1()\Name + " / Spalte: " + ColumnInfo1()\Name
Debug StringField(Record1(), ListIndex(ColumnInfo1()), Chr(10)) + " / " + StringField(Record2(), ListIndex(ColumnInfo1()), Chr(10))
Bei der ersten Zeile ist ColumnInfo1()\Name um eine Spalte zu weit.
Gibt es da keine GUI
Leider kenne ich keine Freeware hierzu. Ist vom Arbeitgeber.

Das Verrutschen der Spaltennamen sollte auch bei einer Access Datenbank sein.

Ich habe folgenden Test gemacht:
In einer Tabelle, habe ich mehrere Spalten. In einer Spalte habe
ich z. B. den Text verändert und es dann mit der Debug Zeile verglichen.
Hm, ich denke mal, dass das Problem bei Dir auch auftritt???

Wäre super nett, wenn Du noch mal schauen könntest.

Vielen Dank.
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
Little John

Beitrag von Little John »

Hallo,

leider kenne ich mich mit Firebird nicht aus. Da ich aber (hier im Forum?) ganz vielversprechende Dinge darüber gelesen habe, lese ich hier interessiert mit.
TheSaint hat geschrieben:
Gibt es da keine GUI
Leider kenne ich keine Freeware hierzu. Ist vom Arbeitgeber.
Was ist hiermit: http://firebird.softonic.de/ ?
Über eine an einen klassischen Dateimanager erinnernde Oberfläche editiert man mit Firebird bestehende Datenbanken oder erstellt neue.
Gruß, Little John
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Hi,

Habe noch ein Problem mit der ExDatabase LIB entdeckt.

Purebasic erzeugt ein sehr langen Dateiname beim testen. (PureBasic_Compilation0.exe). Da der Name der DSN aus Programmname und Datenbankname erstellt wird, konnte es zu Namensprobleme der DSN führen.
Der DSN darf aber maximal 32 Zeichen lang werden. Diesen hatte ich vorher linksbündig begrenzt und konnte somit zu zwei gleichen DSN führen.
Mit der neuen Version (v1.11) wird jetzt der DSN rechtsbündig begrenzt.

Neues Version liegt zum Download bereit.

Alles Gute

Michael
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@TheSaint: Ok, ich kann den Fehler nun nachvollziehen (mit MDB). Bin auf
der Bugsuche. Melde mich wieder, wenn ich den Käfer gefunden habe.

@Little John: Der unter dem von Dir geposteten Link verfügbare Download
beinhaltet leider keine GUI, sondern nur den FireBird-Server, welchen ich
schon habe. Der bei softonic abgebildete Screenshot zeigt den 'EMS SQL
Manager for InterBase/Firebird', der bei 400 und ein paar zerquetschte
Euronen anfängt. Ich lade mir jetzt mal die kostenlose Lite-Version.

Grüße ... Kiffi
a²+b²=mc²
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo Kiffi,
hallo mk-soft,

vielen Dank für Eure Hilfe.

@mk-soft:
Ich habe festgestellt, nachdem ich mir die BenutzerDSN bzw. SystemDSN angeschauft habe, das der CLIENT dort nicht eingetragen wird. Das Feld bleibt leer.

Da ich den Tipp von Kiffi bekommen habe, das man die Lib auch so sich ansehen kann, habe ich den Code so wie folgt geändert.

Code: Alles auswählen

 ; Attributes erstellen   

Case "FDB"
      strAttributes.s + "DSN=" + dsn
      strAttributes.s + ";DESCRIPTION=" + name
      strAttributes.s + ";DATABASE=" + databasename
      strAttributes.s + ";UID=" + user
      strAttributes.s + ";PWD=" + pass
      strAttributes.s + ";Client=" + attributes   <=== geändert
      If attributes
        strAttributes.s + ";"   <=== geändert
      EndIf
Nachdem ich o. g. Änderungen vorgenommen habe, wird der Client auch wieder eingetragen.

@Kiffi:
@TheSaint: Ok, ich kann den Fehler nun nachvollziehen (mit MDB). Bin auf
der Bugsuche. Melde mich wieder, wenn ich den Käfer gefunden habe.
Das wäre echt toll, wenn du den Käfer einfangen könntest. :)
Ich habs einfach nicht gefunden...

Nochmals vielen Dank.
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

@TheSaint.

Für FDB gibt es ein Beispiel. Deine änderung ist nicht ganz richtig und kannst diese wieder rückgängig machen.

Code: Alles auswählen

Define.s dbName = "d:\data\test.fdb"
Define.s dsn =  AddSystemDSN(dbName, "SYSDBA", "masterkey", "", "Client=C:\Programme\Firebird\Firebird_2_0\bin\fbclient.dll") ; DSN hinzufügen
Debug "DSN: " + dsn
Debug GetSQLInstallerError()

If ExamineTables(dsn)
  Debug "Tabellen in Database:"
  Debug ""
  While NextTable()
    Debug GetTableName() + "  <--  " + GetTableType()
  Wend
  Debug "" : Debug ""
EndIf
Der Parameter "Client=..." wird als Attribute übergeben
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo mk-soft,

vielen Dank für Deine Antwort.
Für FDB gibt es ein Beispiel.
Ja, dieses Beispiel verwende ich auch und ich verwende auch:

Code: Alles auswählen

Define.s dsn =  AddSystemDSN(dbName, "SYSDBA", "masterkey", "", "Client=C:\Programme\Firebird\Firebird_2_0\bin\fbclient.dll") ; DSN hinzufügen 
Nur bei mir wird der Client nicht in der Systemsteuerung, .... , im ODBC-Datenquellen-Administator eingetragen.
Alles andere wird eingetragen, nur der Client nicht??
Komisch.
Ich werde mal die neuen Version (v1.11) herunterladen.

Nochmals vielen Dank.
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
Little John

Beitrag von Little John »

2Kiffi:
Dann ist die Beschreibung auf der softonic-Seite grob irreführend. :( Tut mir leid.

Gruß, Little John
Antworten