Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lecture Port Serie, SQL et VB6

6 réponses
Avatar
pierremag
Bonjour,

Dans un precedent file (http://minilien.com/?g2e5qPu70a) Nicolas G.
avait solutionné mon probleme en me conseillant de rajouter un " ; " à
la fin de la commande print.

Aujourd'hui, je retrouve mon souci en essayant d'écrire mes données
dans une base SQL : L'écriture se fait bien, mais "en vrac" et je ne
comprend pas comment ranger tout ça.

Si quelqu'un a une idée ...

Merci.

Pierre.

Résumé de mon code :

-Acces à la base SQL par ADODB-
puis :

Private Sub MSComm1_OnComm()
'Detection d'element sur le port com (procédure evenementielle)
If MSComm1.CommEvent Then
Tampon = MSComm1.Input
VisuTicket.SelStart = Len(VisuTicket.Text)
VisuTicket.SelText = Tampon 'ici, on affiche le résultat dans
un champ de texte

Sur la ligne suivante, le ";" à résolu le probleme du formatage de
donnée pendant l'ecriture dans un fichier texte

Print #Numfich, Tampon;

Sur les lignes suivantes, la donnée est copiée dans ma base SQL, mais
"en vrac" !!!

'Ecriture de la donnée en SQL
sql = "INSERT INTO Import (data) values ('" & Tampon & "')"
Set rst = cnx.Execute(sql)

End If
End Sub

6 réponses

Avatar
ng
Salut,

sql = "INSERT INTO Import (data) values ('" & Tampon & "')"


Es-tu sur que cela ajoute bien les données bout à bout (pas de CR/LF/CRLF...
entre chaque insertion).
La solution ne serait pas plutot de tout recevoir d'abord puis ensuite
d'ajouter à la base ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pierre wrote:
Bonjour,

Dans un precedent file (http://minilien.com/?g2e5qPu70a) Nicolas G.
avait solutionné mon probleme en me conseillant de rajouter un " ; " à
la fin de la commande print.

Aujourd'hui, je retrouve mon souci en essayant d'écrire mes données
dans une base SQL : L'écriture se fait bien, mais "en vrac" et je ne
comprend pas comment ranger tout ça.

Si quelqu'un a une idée ...

Merci.

Pierre.

Résumé de mon code :

-Acces à la base SQL par ADODB-
puis :

Private Sub MSComm1_OnComm()
'Detection d'element sur le port com (procédure evenementielle)
If MSComm1.CommEvent Then
Tampon = MSComm1.Input
VisuTicket.SelStart = Len(VisuTicket.Text)
VisuTicket.SelText = Tampon 'ici, on affiche le résultat dans
un champ de texte

Sur la ligne suivante, le ";" à résolu le probleme du formatage de
donnée pendant l'ecriture dans un fichier texte

Print #Numfich, Tampon;

Sur les lignes suivantes, la donnée est copiée dans ma base SQL, mais
"en vrac" !!!

'Ecriture de la donnée en SQL
sql = "INSERT INTO Import (data) values ('" & Tampon & "')"
Set rst = cnx.Execute(sql)

End If
End Sub


Avatar
pierremag
Effectivement ça parait plus propre : detection d'un CRLF, puis envoi
dans un "tampon".

Mais comme ça marche pile-poile en ecriture de fichiet .txt avec la
commande Print; Je me disais qu'il y avait peut-etre une solution qui
m'evitait d'avoir à controler chaque octet de mon tampon ...

Si la solution existe, je suis toujours preneur ...


Merci.

"ng" wrote in message news:...
Salut,

> sql = "INSERT INTO Import (data) values ('" & Tampon & "')"
Es-tu sur que cela ajoute bien les données bout à bout (pas de CR/LF/CRLF...
entre chaque insertion).
La solution ne serait pas plutot de tout recevoir d'abord puis ensuite
d'ajouter à la base ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pierre wrote:
> Bonjour,
>
> Dans un precedent file (http://minilien.com/?g2e5qPu70a) Nicolas G.
> avait solutionné mon probleme en me conseillant de rajouter un " ; " à
> la fin de la commande print.
>
> Aujourd'hui, je retrouve mon souci en essayant d'écrire mes données
> dans une base SQL : L'écriture se fait bien, mais "en vrac" et je ne
> comprend pas comment ranger tout ça.
>
> Si quelqu'un a une idée ...
>
> Merci.
>
> Pierre.
>
> Résumé de mon code :
>
> -Acces à la base SQL par ADODB-
> puis :
>
> Private Sub MSComm1_OnComm()
> 'Detection d'element sur le port com (procédure evenementielle)
> If MSComm1.CommEvent Then
> Tampon = MSComm1.Input
> VisuTicket.SelStart = Len(VisuTicket.Text)
> VisuTicket.SelText = Tampon 'ici, on affiche le résultat dans
> un champ de texte
>
> Sur la ligne suivante, le ";" à résolu le probleme du formatage de
> donnée pendant l'ecriture dans un fichier texte
>
> Print #Numfich, Tampon;
>
> Sur les lignes suivantes, la donnée est copiée dans ma base SQL, mais
> "en vrac" !!!
>
> 'Ecriture de la donnée en SQL
> sql = "INSERT INTO Import (data) values ('" & Tampon & "')"
> Set rst = cnx.Execute(sql)
>
> End If
> End Sub


Avatar
ng
Salut,

En fait avec Print, le probleme ne venait pas de ton tampon mais de
l'instruction Print.
En effet Print ajoute automatiquement un CR LF à la fin alors que Print; non
:

Print #k, "Mon texte" '// Ecrit Mon texte%CRLF%
Print #k, "Mon texte"; '// Ecrit Mon texte


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pierre wrote:
Effectivement ça parait plus propre : detection d'un CRLF, puis envoi
dans un "tampon".

Mais comme ça marche pile-poile en ecriture de fichiet .txt avec la
commande Print; Je me disais qu'il y avait peut-etre une solution qui
m'evitait d'avoir à controler chaque octet de mon tampon ...

Si la solution existe, je suis toujours preneur ...


Merci.

"ng" wrote in message
news:...
Salut,

sql = "INSERT INTO Import (data) values ('" & Tampon & "')"


Es-tu sur que cela ajoute bien les données bout à bout (pas de
CR/LF/CRLF... entre chaque insertion).
La solution ne serait pas plutot de tout recevoir d'abord puis
ensuite d'ajouter à la base ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pierre wrote:
Bonjour,

Dans un precedent file (http://minilien.com/?g2e5qPu70a) Nicolas G.
avait solutionné mon probleme en me conseillant de rajouter un " ;
" à la fin de la commande print.

Aujourd'hui, je retrouve mon souci en essayant d'écrire mes données
dans une base SQL : L'écriture se fait bien, mais "en vrac" et je ne
comprend pas comment ranger tout ça.

Si quelqu'un a une idée ...

Merci.

Pierre.

Résumé de mon code :

-Acces à la base SQL par ADODB-
puis :

Private Sub MSComm1_OnComm()
'Detection d'element sur le port com (procédure evenementielle)
If MSComm1.CommEvent Then
Tampon = MSComm1.Input
VisuTicket.SelStart = Len(VisuTicket.Text)
VisuTicket.SelText = Tampon 'ici, on affiche le résultat dans
un champ de texte

Sur la ligne suivante, le ";" à résolu le probleme du formatage de
donnée pendant l'ecriture dans un fichier texte

Print #Numfich, Tampon;

Sur les lignes suivantes, la donnée est copiée dans ma base SQL,
mais "en vrac" !!!

'Ecriture de la donnée en SQL
sql = "INSERT INTO Import (data) values ('" & Tampon & "')"
Set rst = cnx.Execute(sql)

End If
End Sub






Avatar
pierremag
Ok, j'ai compris.

Il faut donc necessairement que je me cogne l'analyse de la trame
entrante sur mon port série, pour ne lancer l'écriture SQL QUE sur
detection d'un CRLF...

Au boulot !

Merci.

Pierre

"ng" wrote in message news:...
Salut,

En fait avec Print, le probleme ne venait pas de ton tampon mais de
l'instruction Print.
En effet Print ajoute automatiquement un CR LF à la fin alors que Print; non
:

Print #k, "Mon texte" '// Ecrit Mon texte%CRLF%
Print #k, "Mon texte"; '// Ecrit Mon texte


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pierre wrote:
> Effectivement ça parait plus propre : detection d'un CRLF, puis envoi
> dans un "tampon".
>
> Mais comme ça marche pile-poile en ecriture de fichiet .txt avec la
> commande Print; Je me disais qu'il y avait peut-etre une solution qui
> m'evitait d'avoir à controler chaque octet de mon tampon ...
>
> Si la solution existe, je suis toujours preneur ...
>
>
> Merci.
>
> "ng" wrote in message
> news:...
>> Salut,
>>
>>> sql = "INSERT INTO Import (data) values ('" & Tampon & "')"
>> Es-tu sur que cela ajoute bien les données bout à bout (pas de
>> CR/LF/CRLF... entre chaque insertion).
>> La solution ne serait pas plutot de tout recevoir d'abord puis
>> ensuite d'ajouter à la base ?
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>> Pierre wrote:
>>> Bonjour,
>>>
>>> Dans un precedent file (http://minilien.com/?g2e5qPu70a) Nicolas G.
>>> avait solutionné mon probleme en me conseillant de rajouter un " ;
>>> " à la fin de la commande print.
>>>
>>> Aujourd'hui, je retrouve mon souci en essayant d'écrire mes données
>>> dans une base SQL : L'écriture se fait bien, mais "en vrac" et je ne
>>> comprend pas comment ranger tout ça.
>>>
>>> Si quelqu'un a une idée ...
>>>
>>> Merci.
>>>
>>> Pierre.
>>>
>>> Résumé de mon code :
>>>
>>> -Acces à la base SQL par ADODB-
>>> puis :
>>>
>>> Private Sub MSComm1_OnComm()
>>> 'Detection d'element sur le port com (procédure evenementielle)
>>> If MSComm1.CommEvent Then
>>> Tampon = MSComm1.Input
>>> VisuTicket.SelStart = Len(VisuTicket.Text)
>>> VisuTicket.SelText = Tampon 'ici, on affiche le résultat dans
>>> un champ de texte
>>>
>>> Sur la ligne suivante, le ";" à résolu le probleme du formatage de
>>> donnée pendant l'ecriture dans un fichier texte
>>>
>>> Print #Numfich, Tampon;
>>>
>>> Sur les lignes suivantes, la donnée est copiée dans ma base SQL,
>>> mais "en vrac" !!!
>>>
>>> 'Ecriture de la donnée en SQL
>>> sql = "INSERT INTO Import (data) values ('" & Tampon & "')"
>>> Set rst = cnx.Execute(sql)
>>>
>>> End If
>>> End Sub


Avatar
Gloops
Salut,

Des fois qu'un oeil neuf puisse aider ...

Excuse, je ne comprends pas pourquoi tu n'utilises pas Line Input # ...

C'est vrai que je n'ai jamais essayé
Open "COM1:" For Input As #1

Peut-être qu'on se fait jeter ?
_____________________________________
Pierre a écrit, le 20/10/2004 16:46 :

Ok, j'ai compris.

Il faut donc necessairement que je me cogne l'analyse de la trame
entrante sur mon port série, pour ne lancer l'écriture SQL QUE sur
detection d'un CRLF...

Au boulot !

Merci.

Pierre

"ng" wrote in message news:...

Salut,

En fait avec Print, le probleme ne venait pas de ton tampon mais de
l'instruction Print.
En effet Print ajoute automatiquement un CR LF à la fin alors que Print; non
:

Print #k, "Mon texte" '// Ecrit Mon texte%CRLF%
Print #k, "Mon texte"; '// Ecrit Mon texte


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pierre wrote:

Effectivement ça parait plus propre : detection d'un CRLF, puis envoi
dans un "tampon".

Mais comme ça marche pile-poile en ecriture de fichiet .txt avec la
commande Print; Je me disais qu'il y avait peut-etre une solution qui
m'evitait d'avoir à controler chaque octet de mon tampon ...

Si la solution existe, je suis toujours preneur ...


Merci.

"ng" wrote in message
news:...

Salut,


sql = "INSERT INTO Import (data) values ('" & Tampon & "')"



Es-tu sur que cela ajoute bien les données bout à bout (pas de
CR/LF/CRLF... entre chaque insertion).
La solution ne serait pas plutot de tout recevoir d'abord puis
ensuite d'ajouter à la base ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Pierre wrote:

Bonjour,

Dans un precedent file (http://minilien.com/?g2e5qPu70a) Nicolas G.
avait solutionné mon probleme en me conseillant de rajouter un " ;
" à la fin de la commande print.

Aujourd'hui, je retrouve mon souci en essayant d'écrire mes données
dans une base SQL : L'écriture se fait bien, mais "en vrac" et je ne
comprend pas comment ranger tout ça.

Si quelqu'un a une idée ...

Merci.

Pierre.

Résumé de mon code :

-Acces à la base SQL par ADODB-
puis :

Private Sub MSComm1_OnComm()
'Detection d'element sur le port com (procédure evenementielle)
If MSComm1.CommEvent Then
Tampon = MSComm1.Input
VisuTicket.SelStart = Len(VisuTicket.Text)
VisuTicket.SelText = Tampon 'ici, on affiche le résultat dans
un champ de texte

Sur la ligne suivante, le ";" à résolu le probleme du formatage de
donnée pendant l'ecriture dans un fichier texte

Print #Numfich, Tampon;

Sur les lignes suivantes, la donnée est copiée dans ma base SQL,
mais "en vrac" !!!

'Ecriture de la donnée en SQL
sql = "INSERT INTO Import (data) values ('" & Tampon & "')"
Set rst = cnx.Execute(sql)

End If
End Sub










Avatar
pierremag
En fait, maintenant c'est vers l'écriture dans ma base SQL que je
boss.

D'ailleurs, si cela interesse quelqu'un, voici le code final, que je
test ce matin :

<Connexion à la base SQL préalable>
<Lecture de mon port série, => variable Tampon>

'Traitement du Tampon pour detection d'un CRLF
If InStr(Tampon, vbCrLf) Then 'Si il y a un CRLF dans
"Tampon", alors :
FinTampon = Left(Tampon, InStr(Tampon, vbCrLf) + 1) 'Lit
"Tampon" jusqu'au CRLF
ChrComplete = ChrComplete + FinTampon 'Copie jusqu'au CRLF
dans la chaîne finale
Tampon = Right(Tampon, Len(Tampon) - InStr(Tampon, vbCrLf)
- 1) 'Efface jusqu'au CRLF dans tampon
While Left(ChrComplete, 1) = Chr(0) 'Si la chaine commence
par un "Null"
ChrComplete = (Right(ChrComplete, Len(ChrComplete) -
1)) 'On efface ce caractere Null
Wend
'Ecriture de la donnée en SQL
SQL = "INSERT INTO Import (data) values ('" & ChrComplete
& "')"
Set rst = cnx.Execute(SQL)
ChrComplete = Tampon 'copie ce qui reste dans la chaîne
finale
Else
ChrComplete = ChrComplete + Tampon 'Si pas de CRLF, on
ajoute "Tampon" à "ChrComplete"
End If

Désolé pour les sauts de lignes ...

Pierre

Gloops wrote in message news:<417b99df$0$1033$...
Salut,

Des fois qu'un oeil neuf puisse aider ...

Excuse, je ne comprends pas pourquoi tu n'utilises pas Line Input # ...

C'est vrai que je n'ai jamais essayé
Open "COM1:" For Input As #1

Peut-être qu'on se fait jeter ?
_____________________________________
Pierre a écrit, le 20/10/2004 16:46 :

> Ok, j'ai compris.
>
> Il faut donc necessairement que je me cogne l'analyse de la trame
> entrante sur mon port série, pour ne lancer l'écriture SQL QUE sur
> detection d'un CRLF...
>
> Au boulot !
>
> Merci.
>
> Pierre
>
> "ng" wrote in message news:...
>
>>Salut,
>>
>>En fait avec Print, le probleme ne venait pas de ton tampon mais de
>>l'instruction Print.
>>En effet Print ajoute automatiquement un CR LF à la fin alors que Print; non
>>:
>>
>>Print #k, "Mon texte" '// Ecrit Mon texte%CRLF%
>>Print #k, "Mon texte"; '// Ecrit Mon texte
>>
>>
>>--
>>Nicolas G.
>>FAQ VB : http://faq.vb.free.fr
>>API Guide : http://www.allapi.net
>>Google Groups : http://groups.google.fr/
>>MZ-Tools : http://www.mztools.com/
>>
>>Pierre wrote:
>>
>>>Effectivement ça parait plus propre : detection d'un CRLF, puis envoi
>>>dans un "tampon".
>>>
>>>Mais comme ça marche pile-poile en ecriture de fichiet .txt avec la
>>>commande Print; Je me disais qu'il y avait peut-etre une solution qui
>>>m'evitait d'avoir à controler chaque octet de mon tampon ...
>>>
>>>Si la solution existe, je suis toujours preneur ...
>>>
>>>
>>>Merci.
>>>
>>>"ng" wrote in message
>>>news:...
>>>
>>>>Salut,
>>>>
>>>>
>>>>> sql = "INSERT INTO Import (data) values ('" & Tampon & "')"
>>>>
>>>>Es-tu sur que cela ajoute bien les données bout à bout (pas de
>>>>CR/LF/CRLF... entre chaque insertion).
>>>>La solution ne serait pas plutot de tout recevoir d'abord puis
>>>>ensuite d'ajouter à la base ?
>>>>
>>>>--
>>>>Nicolas G.
>>>>FAQ VB : http://faq.vb.free.fr
>>>>API Guide : http://www.allapi.net
>>>>Google Groups : http://groups.google.fr/
>>>>MZ-Tools : http://www.mztools.com/
>>>>
>>>>Pierre wrote:
>>>>
>>>>>Bonjour,
>>>>>
>>>>>Dans un precedent file (http://minilien.com/?g2e5qPu70a) Nicolas G.
>>>>>avait solutionné mon probleme en me conseillant de rajouter un " ;
>>>>>" à la fin de la commande print.
>>>>>
>>>>>Aujourd'hui, je retrouve mon souci en essayant d'écrire mes données
>>>>>dans une base SQL : L'écriture se fait bien, mais "en vrac" et je ne
>>>>>comprend pas comment ranger tout ça.
>>>>>
>>>>>Si quelqu'un a une idée ...
>>>>>
>>>>>Merci.
>>>>>
>>>>>Pierre.
>>>>>
>>>>>Résumé de mon code :
>>>>>
>>>>>-Acces à la base SQL par ADODB-
>>>>>puis :
>>>>>
>>>>>Private Sub MSComm1_OnComm()
>>>>>'Detection d'element sur le port com (procédure evenementielle)
>>>>> If MSComm1.CommEvent Then
>>>>> Tampon = MSComm1.Input
>>>>> VisuTicket.SelStart = Len(VisuTicket.Text)
>>>>> VisuTicket.SelText = Tampon 'ici, on affiche le résultat dans
>>>>>un champ de texte
>>>>>
>>>>>Sur la ligne suivante, le ";" à résolu le probleme du formatage de
>>>>>donnée pendant l'ecriture dans un fichier texte
>>>>>
>>>>> Print #Numfich, Tampon;
>>>>>
>>>>>Sur les lignes suivantes, la donnée est copiée dans ma base SQL,
>>>>>mais "en vrac" !!!
>>>>>
>>>>> 'Ecriture de la donnée en SQL
>>>>> sql = "INSERT INTO Import (data) values ('" & Tampon & "')"
>>>>> Set rst = cnx.Execute(sql)
>>>>>
>>>>> End If
>>>>>End Sub