Aktuelle Zeit: 23.04.2019 02:28

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: ODBC Problem auf Mac OS
BeitragVerfasst: 16.01.2019 16:26 
Offline

Registriert: 14.12.2018 23:01
Hallo Gemeinde!

Hab ein Programm mit Zugriff auf DB2 mittels ODBC geschrieben. Unter Windows und Ubuntu / LInux
läuft das soweit.

Beim MAC OS bekomme ich aber anstelle des Datasource Namens nur den Anfangsbuchstaben der Datasource.
In meinem Fall heißt die Datasource SJB01, angezeigt wird in Purebasic aber nur S.
Wenn ich dann den dann mit dem richtigen Namen überschreibe, welcher mit iODBC Administrator64
verifiziert ist, bekomme ich eine Fehlermeldung, die nichts aussagt. Es steht einfach ein großes D als
Fehlertext.

Hat jemand eine Idee?
LG
Jörg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC Problem auf Mac OS
BeitragVerfasst: 16.01.2019 19:23 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Halli Hallo Hallöchen Jörg Burdorf,

ich besitze zwar keinen Mac, aber meistens ist so ein beschriebenes Problem auf "Ascii versus Unicode" zurückzuführen.

Hier wird bestimmt irgendein "Pointer" falsch ausgelesen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC Problem auf Mac OS
BeitragVerfasst: 16.01.2019 19:43 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Ist immer noch ein Bug unter MacOS... Wurde leider bis heute nicht repariert.

Unter ASCII funktioniert es, aber nicht unter Unicode

ODBC.LOG

ascii
Zitat:
[000000.000642]
PureBasic.0 1018FF5C0 ENTER SQLConnect
SQLHDBC 0x100419f20
SQLCHAR * 0x100424130
| myodbc-v53-x64-ansi |
SQLSMALLINT -3 (SQL_NTS)
SQLCHAR * 0x1004257a0
| developer |
SQLSMALLINT -3 (SQL_NTS)
SQLCHAR * 0x7fff5dde9d4c
| **** |
SQLSMALLINT -3 (SQL_NTS)

[000000.038373]
PureBasic.0 1018FF5C0 EXIT SQLConnect with return code 0 (SQL_SUCCESS)
SQLHDBC 0x100419f20
SQLCHAR * 0x100424130
SQLSMALLINT -3 (SQL_NTS)
SQLCHAR * 0x1004257a0
SQLSMALLINT -3 (SQL_NTS)
SQLCHAR * 0x7fff5dde9d4c
SQLSMALLINT -3 (SQL_NTS)


unicode
Zitat:
[000000.000705]
PureBasic.0 105CC25C0 ENTER SQLConnectW
SQLHDBC 0x100724dd0
SQLWCHAR * 0x100724d90
SQLSMALLINT -3 (SQL_NTS)
SQLWCHAR * 0x10072d130
SQLSMALLINT -3 (SQL_NTS)
SQLWCHAR * 0x7fff5dde7e50
| **** |
SQLSMALLINT -3 (SQL_NTS)

[000000.001245]
PureBasic.0 105CC25C0 EXIT SQLConnectW with return code -1 (SQL_ERROR)
SQLHDBC 0x100724dd0
SQLWCHAR * 0x100724d90
SQLSMALLINT -3 (SQL_NTS)
SQLWCHAR * 0x10072d130
SQLSMALLINT -3 (SQL_NTS)
SQLWCHAR * 0x7fff5dde7e50
SQLSMALLINT -3 (SQL_NTS)

_________________
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  
 Betreff des Beitrags: Re: ODBC Problem auf Mac OS
BeitragVerfasst: 17.01.2019 01:38 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Habe eine Bugreport erstellt

Link: https://www.purebasic.fr/english/viewto ... 24&t=72104

_________________
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  
 Betreff des Beitrags: Re: ODBC Problem auf Mac OS
BeitragVerfasst: 17.01.2019 09:42 
Offline

Registriert: 14.12.2018 23:01
Hi !

Ja, super! Bin mal gespannt, ob sich da was tut. Würde meinen Wirkungskreis
stark erweitern. Wäre dann wirklich Plattform übergreifend!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC Problem auf Mac OS
BeitragVerfasst: 17.01.2019 13:48 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Was ich noch schreiben werde ist eine dll/so/dylib, das man unter Unicode auch ASC Datenbanktreiber ansprechen kann...

_________________
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  
 Betreff des Beitrags: Re: ODBC Problem auf Mac OS
BeitragVerfasst: 18.01.2019 01:27 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Hier erst mal eine Lösung die ASCII Treiber zu verwenden.
Dazu wird eine Library erstellt der den ASCII ODBC-Treiber aufruft.

Es sind zwei Dateien
Die myodbca.pb um die Library zu erstellen und die myodbca_include um die Funktionen aufzurufen.

Die Datenbank Funktionen werden dann mit den Anhängsel "A" für ASCII aufgerufen.

Ich hoffe das bald auch Unicode auf MacOS funktioniert.

Achtung! Purebasic v5.46 erforderlich um die Library in Ascii zu erstellen

Library
Code:
;-TOP

; Comment : Use AscII Database Helper (dll, so, dylib)
; Author  : mk-soft
; Create  : 17.01.2019
; Version : v0.3

; *****************************************************************************

CompilerIf #PB_Compiler_Unicode
  CompilerError "Disable compiler option unicode!"
CompilerEndIf
 
CompilerIf Not #PB_Compiler_Thread
  CompilerError "Enable compiler option threadsafe!"
CompilerEndIf

; *****************************************************************************

EnableExplicit

Threaded Result$
Threaded dblVal.d
Threaded fltVal.f
Threaded llVal.q

; *****************************************************************************

ProcedureDLL UseODBCDatabaseA()
  ProcedureReturn UseODBCDatabase()
EndProcedure
; ---------------------------------------------------------
ProcedureDLL AffectedDatabaseRowsA(Database)
  ProcedureReturn AffectedDatabaseRows(Database)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL CheckDatabaseNullA(Database, Column)
  ProcedureReturn CheckDatabaseNull(Database, Column)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL CloseDatabaseA(Database)
  ProcedureReturn CloseDatabase(Database)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseColumnIndexA(Database, ColumnName$)
  ProcedureReturn DatabaseColumnIndex(Database, ColumnName$)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseColumnNameStrA(Database, Column)
  Result$ = DatabaseColumnName(Database, Column)
  ProcedureReturn @Result$
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseColumnSizeA(Database, Column)
  ProcedureReturn DatabaseColumnSize(Database, Column)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseColumnTypeA(Database, Column)
  ProcedureReturn DatabaseColumnType(Database, Column)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseColumnsA(Database)
  ProcedureReturn DatabaseColumns(Database)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseDriverDescriptionStrA()
  Result$ = DatabaseDriverDescription()
  ProcedureReturn @Result$
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseDriverNameStrA()
  Result$ = DatabaseDriverName()
  ProcedureReturn @Result$
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseErrorStrA()
  Result$ = DatabaseError()
  ProcedureReturn @Result$
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseIDA(Database)
  ProcedureReturn DatabaseID(Database)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseQueryA(Database, Request$, Flags = 0)
  ProcedureReturn DatabaseQuery(Database, Request$, Flags)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL DatabaseUpdateA(Database, Request$)
  ProcedureReturn DatabaseUpdate(Database, Request$)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL ExamineDatabaseDriversA()
  ProcedureReturn ExamineDatabaseDrivers()
EndProcedure
; ---------------------------------------------------------
ProcedureDLL FinishDatabaseQueryA(Database)
  ProcedureReturn FinishDatabaseQuery(Database)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL FirstDatabaseRowA(Database)
  ProcedureReturn FirstDatabaseRow(Database)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL GetDatabaseBlobA(Database, Column, *Buffer, Bufferlength)
  ProcedureReturn GetDatabaseBlob(Database, Column, *Buffer, Bufferlength)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL GetDatabaseDoublePtrA(Database, Column)
  dblVal = GetDatabaseDouble(Database, Column)
  ProcedureReturn @dblVal
EndProcedure
; ---------------------------------------------------------
ProcedureDLL GetDatabaseFloatPtrA(Database, Column)
  fltVal = GetDatabaseFloat(Database, Column)
  ProcedureReturn @fltVal
EndProcedure
; ---------------------------------------------------------
ProcedureDLL GetDatabaseLongA(Database, Column)
  ProcedureReturn GetDatabaseLong(Database, Column)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL GetDatabaseQuadA(Database, Column)
  ProcedureReturn GetDatabaseQuad(Database, Column)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL GetDatabaseQuadPtrA(Database, Column)
  llVal = GetDatabaseQuad(Database, Column)
  ProcedureReturn @llVal
EndProcedure
; ---------------------------------------------------------
ProcedureDLL GetDatabaseStringStrA(Database, Column)
  Result$ = GetDatabaseString(Database, Column)
  ProcedureReturn @Result$
EndProcedure
; ---------------------------------------------------------
ProcedureDLL IsDatabaseA(Database)
  ProcedureReturn IsDatabase(Database)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL NextDatabaseDriverA()
  ProcedureReturn NextDatabaseDriver()
EndProcedure
; ---------------------------------------------------------
ProcedureDLL NextDatabaseRowA(Database)
  ProcedureReturn NextDatabaseRow(Database)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL OpenDatabaseA(Database, DatabaseName$, User$, Password$ , Plugin = 1)
  ProcedureReturn OpenDatabase(Database, DatabaseName$, User$, Password$ , Plugin)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL OpenDatabaseRequesterA(Database, Plugin = 0)
  ProcedureReturn OpenDatabaseRequester(Database, Plugin)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL PreviousDatabaseRowA(Database)
  ProcedureReturn PreviousDatabaseRow(Database)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL SetDatabaseBlobA(Database, StatementIndex, *Buffer, BufferLength)
  ProcedureReturn SetDatabaseBlob(Database, StatementIndex, *Buffer, BufferLength)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL SetDatabaseDoubleA(Database, StatementIndex, Value.d)
  ProcedureReturn SetDatabaseDouble(Database, StatementIndex, Value.d)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL SetDatabaseFloatA(Database, StatementIndex, Value.f)
  ProcedureReturn SetDatabaseFloat(Database, StatementIndex, Value.f)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL SetDatabaseLongA(Database, StatementIndex, Value.l)
  ProcedureReturn SetDatabaseLong(Database, StatementIndex, Value.l)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL SetDatabaseNullA(Database, StatementIndex)
  ProcedureReturn SetDatabaseNull(Database, StatementIndex)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL SetDatabaseQuadA(Database, StatementIndex, Value.q)
  ProcedureReturn SetDatabaseQuad(Database, StatementIndex, Value.q)
EndProcedure
; ---------------------------------------------------------
ProcedureDLL SetDatabaseStringA(Database, StatementIndex, Value$)
  ProcedureReturn SetDatabaseString(Database, StatementIndex, Value$)
EndProcedure
; ---------------------------------------------------------

; *****************************************************************************


Include
Code:
;-TOP

; Comment : Use AscII Database Helper (include)
; Author  : mk-soft
; Create  : 17.01.2019
; Version : v0.2

; *****************************************************************************

; *****************************************************************************

Prototype protoUseODBCDatabaseA()
Prototype protoAffectedDatabaseRowsA(Database)
Prototype protoCheckDatabaseNullA(Database, Column)
Prototype protoCloseDatabaseA(Database)
Prototype protoDatabaseColumnIndexA(Database, ColumnName.p-ascii)
Prototype protoDatabaseColumnNameStrA(Database, Column)
Prototype protoDatabaseColumnSizeA(Database, Column)
Prototype protoDatabaseColumnTypeA(Database, Column)
Prototype protoDatabaseColumnsA(Database)
Prototype protoDatabaseDriverDescriptionStrA()
Prototype protoDatabaseDriverNameStrA()
Prototype protoDatabaseErrorStrA()
Prototype protoDatabaseIDA(Database)
Prototype protoDatabaseQueryA(Database, Request.p-ascii, Flags = 0)
Prototype protoDatabaseUpdateA(Database, Request.p-ascii)
Prototype protoExamineDatabaseDriversA()
Prototype protoFinishDatabaseQueryA(Database)
Prototype protoFirstDatabaseRowA(Database)
Prototype protoGetDatabaseBlobA(Database, Column, *Buffer, Bufferlength)
Prototype protoGetDatabaseDoublePtrA(Database, Column)
Prototype protoGetDatabaseFloatPtrA(Database, Column)
Prototype protoGetDatabaseLongA(Database, Column)
Prototype protoGetDatabaseQuadA(Database, Column)
Prototype protoGetDatabaseQuadPtrA(Database, Column)
Prototype protoGetDatabaseStringStrA(Database, Column)
Prototype protoIsDatabaseA(Database)
Prototype protoNextDatabaseDriverA()
Prototype protoNextDatabaseRowA(Database)
Prototype protoOpenDatabaseA(Database, DatabaseName.p-ascii, User.p-ascii, Password.p-ascii , Plugin = 1)
Prototype protoOpenDatabaseRequesterA(Database, Plugin = 0)
Prototype protoPreviousDatabaseRowA(Database)
Prototype protoSetDatabaseBlobA(Database, StatementIndex, *Buffer, BufferLength)
Prototype protoSetDatabaseDoubleA(Database, StatementIndex, Value.d)
Prototype protoSetDatabaseFloatA(Database, StatementIndex, Value.f)
Prototype protoSetDatabaseLongA(Database, StatementIndex, Value.l)
Prototype protoSetDatabaseNullA(Database, StatementIndex)
Prototype protoSetDatabaseQuadA(Database, StatementIndex, Value.q)
Prototype protoSetDatabaseStringA(Database, StatementIndex, Value.p-ascii)

; *****************************************************************************

Procedure OpenMyODBCA(Path.s = "")
  Protected myodbclib.s, lib
 
  If Bool(Path)
    CompilerIf #PB_Compiler_OS = #PB_OS_Windows
      If Right(Path, 1) <> "\" : Path + "\" : EndIf
    CompilerElse
      If Right(Path, 1) <> "/" : Path + "/" : EndIf
    CompilerEndIf
  EndIf
 
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Windows
      myodbclib = Path + "myodbca.dylib"
    CompilerCase #PB_OS_Linux
      myodbclib = Path + "myodbca.so"
    CompilerCase #PB_OS_MacOS
      myodbclib = Path + "myodbca.dylib"
  CompilerEndSelect
 
  lib = OpenLibrary(#PB_Any, myodbclib)
  If Not lib
    ProcedureReturn 0
  EndIf
 
  ;
 
  Global UseODBCDatabaseA.protoUseODBCDatabaseA = GetFunction(lib, "UseODBCDatabaseA")
  Global AffectedDatabaseRowsA.protoAffectedDatabaseRowsA = GetFunction(lib, "AffectedDatabaseRowsA")
  Global CheckDatabaseNullA.protoCheckDatabaseNullA = GetFunction(lib, "CheckDatabaseNullA")
  Global CloseDatabaseA.protoCloseDatabaseA = GetFunction(lib, "CloseDatabaseA")
  Global DatabaseColumnIndexA.protoDatabaseColumnIndexA = GetFunction(lib, "DatabaseColumnIndexA")
  Global DatabaseColumnNameStrA.protoDatabaseColumnNameStrA = GetFunction(lib, "DatabaseColumnNameStrA")
  Global DatabaseColumnSizeA.protoDatabaseColumnSizeA = GetFunction(lib, "DatabaseColumnSizeA")
  Global DatabaseColumnTypeA.protoDatabaseColumnTypeA = GetFunction(lib, "DatabaseColumnTypeA")
  Global DatabaseColumnsA.protoDatabaseColumnsA = GetFunction(lib, "DatabaseColumnsA")
  Global DatabaseDriverDescriptionStrA.protoDatabaseDriverDescriptionStrA = GetFunction(lib, "DatabaseDriverDescriptionStrA")
  Global DatabaseDriverNameStrA.protoDatabaseDriverNameStrA = GetFunction(lib, "DatabaseDriverNameStrA")
  Global DatabaseErrorStrA.protoDatabaseErrorStrA = GetFunction(lib, "DatabaseErrorStrA")
  Global DatabaseIDA.protoDatabaseIDA = GetFunction(lib, "DatabaseIDA")
  Global DatabaseQueryA.protoDatabaseQueryA = GetFunction(lib, "DatabaseQueryA")
  Global DatabaseUpdateA.protoDatabaseUpdateA = GetFunction(lib, "DatabaseUpdateA")
  Global ExamineDatabaseDriversA.protoExamineDatabaseDriversA = GetFunction(lib, "ExamineDatabaseDriversA")
  Global FinishDatabaseQueryA.protoFinishDatabaseQueryA = GetFunction(lib, "FinishDatabaseQueryA")
  Global FirstDatabaseRowA.protoFirstDatabaseRowA = GetFunction(lib, "FirstDatabaseRowA")
  Global GetDatabaseBlobA.protoGetDatabaseBlobA = GetFunction(lib, "GetDatabaseBlobA")
  Global GetDatabaseDoublePtrA.protoGetDatabaseDoublePtrA = GetFunction(lib, "GetDatabaseDoublePtrA")
  Global GetDatabaseFloatPtrA.protoGetDatabaseFloatPtrA = GetFunction(lib, "GetDatabaseFloatPtrA")
  Global GetDatabaseLongA.protoGetDatabaseLongA = GetFunction(lib, "GetDatabaseLongA")
  Global GetDatabaseQuadA.protoGetDatabaseQuadA = GetFunction(lib, "GetDatabaseQuadA")
  Global GetDatabaseQuadPtrA.protoGetDatabaseQuadPtrA = GetFunction(lib, "GetDatabaseQuadPtrA")
  Global GetDatabaseStringStrA.protoGetDatabaseStringStrA = GetFunction(lib, "GetDatabaseStringStrA")
  Global IsDatabaseA.protoIsDatabaseA = GetFunction(lib, "IsDatabaseA")
  Global NextDatabaseDriverA.protoNextDatabaseDriverA = GetFunction(lib, "NextDatabaseDriverA")
  Global NextDatabaseRowA.protoNextDatabaseRowA = GetFunction(lib, "NextDatabaseRowA")
  Global OpenDatabaseA.protoOpenDatabaseA = GetFunction(lib, "OpenDatabaseA")
  Global OpenDatabaseRequesterA.protoOpenDatabaseRequesterA = GetFunction(lib, "OpenDatabaseRequesterA")
  Global PreviousDatabaseRowA.protoPreviousDatabaseRowA = GetFunction(lib, "PreviousDatabaseRowA")
  Global SetDatabaseBlobA.protoSetDatabaseBlobA = GetFunction(lib, "SetDatabaseBlobA")
  Global SetDatabaseDoubleA.protoSetDatabaseDoubleA = GetFunction(lib, "SetDatabaseDoubleA")
  Global SetDatabaseFloatA.protoSetDatabaseFloatA = GetFunction(lib, "SetDatabaseFloatA")
  Global SetDatabaseLongA.protoSetDatabaseLongA = GetFunction(lib, "SetDatabaseLongA")
  Global SetDatabaseNullA.protoSetDatabaseNullA = GetFunction(lib, "SetDatabaseNullA")
  Global SetDatabaseQuadA.protoSetDatabaseQuadA = GetFunction(lib, "SetDatabaseQuadA")
  Global SetDatabaseStringA.protoSetDatabaseStringA = GetFunction(lib, "SetDatabaseStringA") 
 
  ;
 
  ProcedureReturn 1
 
EndProcedure

; *****************************************************************************

Macro DatabaseColumnNameA(Database, Column)
  PeekS(DatabaseColumnNameStrA(Database, Column), -1, #PB_Ascii)
EndMacro

Macro DatabaseDriverDescriptionA()
  PeekS(DatabaseDriverDescriptionStrA(), -1, #PB_Ascii)
EndMacro

Macro DatabaseErrorA()
  PeekS(DatabaseErrorStrA(), -1, #PB_Ascii)
EndMacro

Macro DatabaseDriverNameA()
  PeekS(DatabaseDriverNameStrA(), -1, #PB_Ascii)
EndMacro

Macro GetDatabaseDoubleA(Database, Column)
  PeekD(GetDatabaseDoublePtrA(Database, Column))
EndMacro

Macro GetDatabaseFloatA(Database, Column)
  PeekF(GetDatabaseFloatPtrA(Database, Column))
EndMacro

Macro GetDatabaseQuad32A(Database, Column)
  PeekQ(GetDatabaseQuadPtrA(Database, Column))
EndMacro

Macro GetDatabaseStringA(Database, Column)
  PeekS(GetDatabaseStringStrA(Database, Column), -1, #PB_Ascii)
EndMacro

; *****************************************************************************

; *****************************************************************************

_________________
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


Zuletzt geändert von mk-soft am 18.01.2019 17:24, insgesamt 6-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC Problem auf Mac OS
BeitragVerfasst: 18.01.2019 01:28 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Beispiel
Code:
;-TOP

IncludeFile "myodbca_include.pb"

If Not OpenMyODBCA()
  Debug "Error open libray myodbca"
  End
EndIf


UseODBCDatabaseA()

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

; -----------------------------------------------------------------------------

Global.s database, user, pass

;database = "myodbc-v53-x64-unicode"
database = "myodbc-v53-x64-ansi"
user = "developer"
pass = "purebasic"

If OpenDatabaseA(0, database, user, pass)
  CheckDatabaseUpdate(0, "CREATE TABLE food (name CHAR(50), weight INT)")
 
  CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('apple', '10')")
  CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('pear', '5')")
  CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('banana', '20')")
 
  If DatabaseQueryA(0, "SELECT * FROM food WHERE weight > 2")
   
    While NextDatabaseRowA(0)
      Debug GetDatabaseStringA(0, 0)
    Wend
   
    FinishDatabaseQueryA(0)
  EndIf
 
  CloseDatabaseA(0)
Else
  Debug "Can't open database !"
EndIf

_________________
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  
 Betreff des Beitrags: Re: ODBC Problem auf Mac OS
BeitragVerfasst: 23.01.2019 11:52 
Offline

Registriert: 14.12.2018 23:01
Hallo noch mal. Habe versucht, die PB Version 5.46 zu finden. Im "Museum" gibts aber nur 5.45 oder 5.50.
Kannst du mir die dylib irgendwie zukommen lassen, damit ich das mal testen kann?

LG
Jörg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ODBC Problem auf Mac OS
BeitragVerfasst: 23.01.2019 19:41 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Einfach den Link zu v5.45 kopieren und im Link die Version ändern.

Ausserdem habe ich die Library auf meinen Webserver hinterlegt. Ordner mycodes -> pb5 -> odbc.

Ach ja...
Unter Safari geht ftp so einfach nicht mehr. Ein anderen Browser verwenden oder Benutzer "gast" Password "1234" selber eingeben.

Schau Dir mal das PB-Tool MyAppData an. Somit bekommst du die Library direkt in Deine App kopiert und kann aus Der App direkt die Library laden
Link: https://www.purebasic.fr/english/viewto ... 19&t=61638

Beispiel
Code:
;-TOP

CompilerIf #PB_Compiler_OS = #PB_OS_MacOS

  Procedure.s GetAppPath()
    Protected bundlePathPtr = CocoaMessage(0,CocoaMessage(0,CocoaMessage(0,0,"NSBundle mainBundle"),"bundlePath"),"UTF8String")
    If bundlePathPtr
      Protected bundlePath.s = PeekS(bundlePathPtr,-1,#PB_UTF8) + "/"
    EndIf
    ProcedureReturn bundlePath
  EndProcedure
 
  ; ---------------------------------------------------------------------------------------
 
  Procedure.s GetResourcePath()
    Protected bundlePathPtr = CocoaMessage(0,CocoaMessage(0,CocoaMessage(0,0,"NSBundle mainBundle"),"resourcePath"),"UTF8String")
    If bundlePathPtr
      Protected bundlePath.s = PeekS(bundlePathPtr,-1,#PB_UTF8) + "/"
    EndIf
    ProcedureReturn bundlePath
  EndProcedure
 
  ; ---------------------------------------------------------------------------------------
 
CompilerEndIf

IncludeFile "myodbca_include.pb"

CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
  libpath.s = GetAppPath() + "Contents/Library/"
  If Not OpenMyODBCA(libpath)
    Debug "Error open libray myodbca"
    End
  EndIf
CompilerElse
  If Not OpenMyODBCA()
    Debug "Error open libray myodbca"
    End
  EndIf
CompilerEndIf

UseODBCDatabaseA()
...

_________________
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  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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:  
cron

 


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