Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
je me permets de poster ce message suite à un problème lors de la récupération de données sur un champ de type TEXTE dans une table d'une base de données Mysql.
En effet, j'ai tenté d'utiliser ODBC ainsi que le lien direct PB pour récupérer un enregistrement issu d'un champ TEXTE dans une table.
Problème : Cet enregistrement semble tronqué lors de son extraction de la base de données. J'obitens 32767 caractères ASCII au lieu de 33140 stockés dans la BDD.
Je récupère ce champ dans une variable de type STRING (que j'affiche à l'écran), ce qui à priori ne pose aucun soucis !
Je fais la même chose avec DELPHI et j'ai bien tous les caractères attendus... Je pense au vue de la taille maxi récupérée qu'il y a une "bride" ou plutot une limitation du nombre de caractère récupéré via PB? Comment accepter des tailles plus importantes ou tout simplement comment s'en sortir ?
Quelqu'un aurai t il une idée de ce qui peut se passer ?
Ci joint ma config de dev :
PB 10.5.1 build 66.02 / Mysql V5.0.44 / ODBC v3.51 Driver
Merci d'avance pour le coup de main.
Cordialement.
PS: Je n'utilise pas DELPHI pour mon application donc pas de petit malins svp ;-)
Dernière modification par fmxstyle (01-10-2007 15:14:25)
Hors ligne
ca peut etre ? http://groups.google.com/group/sybase.p … 1ffd?hl=en
Hors ligne
sinon, dans ton dbparm, tu rajoutes ceci :
DBTextLimit='34000', ou DBTextSize='34000'
Hors ligne
ok pour le fichier .ini, je l'ai bien modifié... redemarré restesté et pas mieux !
J'ai changé la valeur du DBTextLimit='65535' dans le dbparm en plus du changement sur le .INI et pas mieux non plus !
Y a t il une proprieté supplémentaire à modifier sur le driver ODBC utilisé ?
Merci d'avance
Dernière modification par fmxstyle (25-09-2007 14:22:11)
Hors ligne
avec pbmaxtextsize ?
http://groups.google.fr/group/powersoft … 308b691279
Hors ligne
Salut pick ouic,
Comme le spécifiait le message précedent j'ai changé l'ensemble des PBMaxTextSize et PBMaxBlobSize du fichier pbodb105.ini....
Exemple :
[SQL Server] PBCatalogOwner='dbo' PBSyntax='SYBASE_SYNTAX' PBDateTime='DEFAULT_DATETIME' PBFunctions='SYBASE_FUNCTIONS' PBSpecialDataTypes='SYBASE_SPECIALDATATYPES' PBObjectIDs='YES' PBMaxBlobSize='65535' PBMaxTextSize='65535' PBDWDynamic='NO' SQLSrvrTSPrefix='0x' PBTrimCatCharColumns='YES' PBUseProcOwner='YES' IdentifierQuoteChar='"'
Sinon j'ai tenté de placer le résultat de la requete sur mon champ de type TEXTE vers un champ de type blob et PB crashe illico presto !
Autre test, j'ai changé le type de données dans la table de la base de données du type TEXTE vers MEDIUMTEXT et pas mieux...
Y'aurai t il par hasard un autre fichier de configuration relatif à PB à changer pour que je puisse enfin avoir mon texte entier ?!?
Merci d'avance pour ton aide.
Hors ligne
Ci joint la chaine de connexion utilisée pour tester la récupération de champ TEXTE dans une STRING :string sql, res
any result[]
blob res2
// Réglages des param. de connexion
SQLCA.DBMS = "ODBC"
SQLCA.Database = "mydatabase"
SQLCA.LogID = ""
SQLCA.LogPass = ""
SQLCA.ServerName = ""
SQLCA.AutoCommit = True
SQLCA.Lock = "RU"
SQLCA.dbparm = "ConnectString='DSN=Test;SERVER=127.0.0.1;DATABASE=mydatabase;UID=toto;PWD=toto;OPTION=16387',StaticBind=0,Date=' \''dd/MM/yy\'' ',Time=' \''HH:MM\'' ',DecimalSeparator=',',DisableBind=1,ConnectOption='SQL_OPT_TRACE,SQL_OPT_TRACE_ON;SQL_OPT_TRACEFILE,c:\temp\odbctrace.log'"
// Etablissement de la connexion ODBC sur la BDD
connect using SQLCA;
// Gestion d'erreur
if SQLCA.sqlcode <> 0 then
MessageBox("Error connecting to database, please check your settings", sqlca.sqlerrtext)
return
end if
// Exécution de la requete et récupération du champ TEXTE dans une variable STRING
SELECT textelines INTO :res FROM table_texte WHERE textename = 'test';
MessageBox(string(len(res)), string(res))
Disconnect using sqlca;
Une idée ?????
Hors ligne
http://www.powerbuilder.org/modules.php … mp;sid=180 ?
il y aurait un lien avec la version build ?
Hors ligne
Je suis sous une build 66.02 de PB10.5 donc cela ne devrait pas poser de problème....
Mon collegue a tésté sur sa machine où il a installé le tout dernier patch PB EBF soit la build 7016 et pareil... donc cela n'est pas le probleme...
Pourrai tu tester ce morceau de code dans un champ TEXTE rempli au dessus de 32767 caractères sur une bdd quelconque (mysql si tu avais) et me dire ce que tu récupère à la fin ? Pense à modifier le .ini si jamais tu teste le morceau de code en question.
Merci d'avance pour ton aide.
Hors ligne
désolé, mais je n'ai plus d'idées...
si quelqu'un a autre chose ?
Hors ligne
Bon, on peut pt'et repartir du début...
Ta donnée, tu la récupères dans une datawindow ?
Si oui, la taille du champ est suffisante ?
Anpi
Dernière modification par Anpi (26-09-2007 14:43:39)
Hors ligne
Je me suis debrouillé autrement car je manquais de temps pour chercher l'info qui me manquais...
J'ai testé le nombre total de caractères de mon enregistrement, le récupère entierement si il ne dépasse pas 32767 caractères, sinon j'utilise une boucle qui va me concatener le retour d'une requete utilisant la fonction SUBSTRING(fieldname, startpos, length), soit un découpage de l'enregistrement puis une concaténation de celui ci dans une string.
J'arrive a m'en sortir grace a cela, ce n'ai pas le rêve donc si vous savez comment récupérer + de 32767 caractères sur un enregistrement d'une base de données, faites le moi savoir...
Merci. ++
Hors ligne