Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 14h44   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 153
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 153
Points : 40
Points : 40
Envoyer un message via MSN à ted the Ors
Par défaut Problème avec un champs memo tronqué

Bonjour,

Je rencontre un soucis avec une table, au niveau d'un champs (= une colonne) déclaré en type "MEMO" mais qui se limite à 255 caractères.

La procédure suivie est la suivante:
1. Création de la table avec déclaration du champs [Clause Contrat] en type memo
Code :
1
2
3
4
5
6
7
 
        REQ_SQL_Table_1 = ""
        REQ_SQL_Table_1 = REQ_SQL_Table_1 & "CREATE Table Table_1 ("
        REQ_SQL_Table_1 = REQ_SQL_Table_1 & "Contrat Text, "
        REQ_SQL_Table_1 = REQ_SQL_Table_1 & "[Clause Contrat] Memo);"
 
        DoCmd.RunSQL (REQ_SQL_Table_1)
2. Exécution d'une requête pour récupérer la dite-clause via une fonction qui me permet de concaténer des lignes d'une table tierce.
J'ai effectué quelques tests dans la fonction et après affichage de la clause avec une MsgBox, il n'y a pas de troncature.
Par contre, une fois la requête d'insertion executée, le libellé est tronqué (à 255 caractères) et j'avoue que je ne saisie pas pourquoi, d'autant que, dans la table, le champs est toujours "déclaré" en type MEMO.

Code :
1
2
3
4
5
6
7
8
9
10
 
        REQ_SQL_Contrat_Clauses = ""
        REQ_SQL_Contrat_Clauses = REQ_SQL_Contrat_Clauses & "INSERT INTO Table_1 "
        REQ_SQL_Contrat_Clauses = REQ_SQL_Contrat_Clauses & "( Contrat, [Clause Contrat] ) "
        REQ_SQL_Contrat_Clauses = REQ_SQL_Contrat_Clauses & "SELECT DISTINCT 4801.[Contrat], "
        REQ_SQL_Contrat_Clauses = REQ_SQL_Contrat_Clauses & "RecupLibClause(4801.[Contrat]) "
        REQ_SQL_Contrat_Clauses = REQ_SQL_Contrat_Clauses & "FROM 4801;"
 
 
        DoCmd.RunSQL (REQ_SQL_Contrat_Clauses)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Public Function RecupLibClause(Contrat As Long) As String
Dim res2 As DAO.Recordset
Dim SQL As String
'Selectionne les libellés clauses Spéciales du projet
SQL = "SELECT [4801].[LIB-CLAUSE] FROM 4801 WHERE [4801].[Contrat]='" & Contrat & "'"
Set res2 = CurrentDb.OpenRecordset(SQL)
 
'MsgBox RecupLibClause
'Concatene les différents enregistrement si la clause existe
'If RecupLibClause <> "" Then
While Not res2.EOF
    RecupLibClause = RecupLibClause & res2.Fields(0).Value & " "
    res2.MoveNext
    Wend
 
Set res2 = Nothing
End Function
ted the Ors est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 14h48   #2
Membre du Club
 
Inscription : juillet 2006
Messages : 153
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 153
Points : 40
Points : 40
Envoyer un message via MSN à ted the Ors
Ok, je crois que j'ai trouvé: cela vient du DISTINCT de la 2ème requête.

Je teste et passe en résolu si c'est OK.
ted the Ors est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 14h50   #3
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 254
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant/développeur ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 1 254
Points : 1 870
Points : 1 870
Bonjour,

La fonction recuplibclause est de type string ce qui je crois la tronque à 255 car
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h11   #4
Membre du Club
 
Inscription : juillet 2006
Messages : 153
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 153
Points : 40
Points : 40
Envoyer un message via MSN à ted the Ors
Non non, je croyais aussi mais comme expliqué dans mon premier message, après affichage de la zone concaténée, il n'y avait pas de troncature...
De plus, les variables string sont limités à 64 ko (soit 2^16)...

Sinon, pour répondre au sujet c'est bien le "distinct" qui provoquait la troncature du champs...
ted the Ors est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h55.


 
 
 
 
Partenaires

Hébergement Web