ATOUTFOX
    COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO

Forum AtoutFox

Le forum AtoutFox

Forum

RSS © www.atoutfox.org - Forum

Re: connection avery berkel FX115 avec un PC
Bonjour,

'oliversoft' a résolu ce problème vers le 16 mars sur ce forum. Sinon, j'ai 2
documents concernant ce protocole : je peux te les transmettre si tu veux ...

Bonne journée

Jean à Grenoble
Tue, 31 Mar 2020 07:22:08 GMT

connection avery berkel FX115 avec un PC
Bonjour à tous,

Quelqu'un aurait-il déjà connecté une balance Avery Berkel, modéle FX115 à un PC par l'intermédiaire d'un port COM ?
Impossible de trouver le protocol de communication pour pouvoir dialoguer avec cette balance.
Cordialement.


Mon, 30 Mar 2020 07:22:08 GMT

Re: Connection SQL
Bonjour

Oui utilises 3 vues séparée et définies les propriétés correctement champs a maître a jour,etc dans la Base de donnée locale,
définies les indexes si besoins il y a dans le formulaire (porocedur loads)
et je pense ça marchera

salutation distinguées



Sun, 29 Mar 2020 07:22:08 GMT

Re: Report des Rencontres 2020
ça n'empêche pas de faire un réponse au sondage :)
http://www.atoutfox.org/programme_rencontres_atoutfox_2020_sondage.asp


Sun, 29 Mar 2020 07:22:08 GMT

Re: midi message out winmm.dll a externe usb midi device
Bonjour,

Les messages MIDI ne sont pas faciles à expliquer brièvement. Je pense qu'il vaut mieux consulter google. Un exemple: https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message

Joyeux dimanche,

Jan FlikweertLe sam. 28 mars 2020, 21h44 Jean =c3=a0 Grenoble a écrit :
> Bonsoir,
>
> je savais que VFP pouvait 'tout faire' mais de là à faire de la musique !!!!!!!
>
> Je suis très étonné, d'avoir la form sous forme de code : c'est comme cela que
> cela a été codé ou bien tu as utilisé l'editeur de classe pour générer le code à
> partir d'un .scx ?
>
> As-tu un site ou des documents donnant la structure de la communication MIDI ?
>
> Sinon, je crois que cela va être une recherche de solution interessante et très
> inattendue !!
>
>
> Jean à Grenoble
>
> PS Il y a un proverbe qui dit que chacun trouve MIDI à sa porte ... mais pas moi ;-)
> .
>



Sun, 29 Mar 2020 07:22:08 GMT

Re: midi message out winmm.dll a externe usb midi device
Bonjour,

La solution consiste à remplacer
[VFP] midiOutOpen (@hDevice, 0,0,0,0) [/VFP]

par
[VFP] midiOutOpen (@hDevice, hDevice-1,0,0,0) [/VFP]

Bon dimanche à toi,

Jan Flikweert


Sun, 29 Mar 2020 07:22:08 GMT

Re: Report des Rencontres 2020
mi-août ;-)


Jean à Grenoble
Sun, 29 Mar 2020 07:22:08 GMT

Re: midi message out winmm.dll a externe usb midi device
Bonjour Francis,

tu as raison mais c'est plutôt rare ! Sous DOS (je suis un spécialiste !), on
pouvait facilement imaginer la position et la taille de chaque objet mais sous
windows c'est beaucoup plus difficile ....

Bon dimanche

Jean à Grenoble
Sun, 29 Mar 2020 07:22:08 GMT

Re: Report des Rencontres 2020
Bien vu Marc,

Oui pour l'automne...

Ici avec les 25° du jour c'est déjà l'été...

Avec le décalage horaire = 1h de confinement en moins.

Cordialement
Francis



Le sam. 28 mars 2020, 12h09 Marc Thivolle a écrit :
> En zélé habitant du Vaucluse, dans la partie sud de la France qui commence pour les habitants de ce département dans la banlieue sud d'Orange, Francis pense que l'hiver commence, pour nous autres nordistes, dès le 15 août.
>
> Donc il faut lire :"Une replanification probable pour cet automne ..."
>
> Bon confinement à toutes et à tous.




Sun, 29 Mar 2020 07:22:08 GMT

Re: midi message out winmm.dll a externe usb midi device
Jean,
Il n'y a aucun problème à coder une form en PRG plutôt que de la "dessiner" dans un formulaire "SCX"
Cordialement
Francis

Le sam. 28 mars 2020, 21h44 Jean =c3=a0 Grenoble a écrit :
> Bonsoir,
>
> je savais que VFP pouvait 'tout faire' mais de là à faire de la musique !!!!!!!
>
> Je suis très étonné, d'avoir la form sous forme de code : c'est comme cela que
> cela a été codé ou bien tu as utilisé l'editeur de classe pour générer le code à
> partir d'un .scx ?
>
> As-tu un site ou des documents donnant la structure de la communication MIDI ?
>
> Sinon, je crois que cela va être une recherche de solution interessante et très
> inattendue !!
>
>
> Jean à Grenoble
>
> PS Il y a un proverbe qui dit que chacun trouve MIDI à sa porte ... mais pas moi ;-)




Sun, 29 Mar 2020 07:22:08 GMT

Re: Report des Rencontres 2020
Miaou ?

Le sam. 28 mars 2020, 21h34 Jean =c3=a0 Grenoble a écrit :
> et le 15 août, c'est la journée nationale des chats ...
>
> Bonne soirée à tous
>
> Jean à Grenoble



Sun, 29 Mar 2020 07:22:08 GMT

Re: midi message out winmm.dll a externe usb midi device
Bonsoir,

je savais que VFP pouvait 'tout faire' mais de là à faire de la musique !!!!!!!

Je suis très étonné, d'avoir la form sous forme de code : c'est comme cela que
cela a été codé ou bien tu as utilisé l'editeur de classe pour générer le code à
partir d'un .scx ?

As-tu un site ou des documents donnant la structure de la communication MIDI ?

Sinon, je crois que cela va être une recherche de solution interessante et très
inattendue !!


Jean à Grenoble

PS Il y a un proverbe qui dit que chacun trouve MIDI à sa porte ... mais pas moi ;-)
Sat, 28 Mar 2020 07:22:08 GMT

Re: Report des Rencontres 2020
et le 15 août, c'est la journée nationale des chats ...

Bonne soirée à tous

Jean à Grenoble
Sat, 28 Mar 2020 07:22:08 GMT

Re: Report des Rencontres 2020
Le 15 Aout, uniquement les bonnes années, sinon c'est plus tôt.
JP


Sat, 28 Mar 2020 07:22:08 GMT

Re: midi message out winmm.dll a externe usb midi device
Bonjour,

Ici une progamme a lister midi devices:

[VFP]
*list_midi_devices.prg
Close All
Clear All
DO declare

LOCAL nCount, nIndex, nBufsize, cBuffer

nCount = midiOutGetNumDevs()
FOR nIndex=0 TO nCount-1
nBufsize = 1024
cBuffer = REPLICATE(CHR(0), nBufsize)

IF midiOutGetDevCaps(nIndex, @cBuffer, nBufsize) = 0
LOCAL oMidiOutCaps As MIDIOUTCAPS
oMidiOutCaps = CREATEOBJECT("MIDIOUTCAPS",@cBuffer)
MESSAGEBOX("Index: "+STR(nIndex)+CHR(13)+"wMid: "+STR(oMidiOutCaps.wMid)+CHR(13)+;
"wPid: "+STR(oMidiOutCaps.wPid)+CHR(13)+;
"Driver Version: "+STR(oMidiOutCaps.vDriverVersion)+CHR(13)+;
"Naam: "+oMidiOutCaps.szPname+CHR(13)+;
"Technologie: "+STR(oMidiOutCaps.wTechnology)+CHR(13)+;
"Voices: "+STR(oMidiOutCaps.wVoices)+CHR(13)+;
"Notes: "+STR(oMidiOutCaps.wNotes)+CHR(13)+;
"Channel Mask: "+STR(oMidiOutCaps.wChannelMask)+CHR(13)+;
"dwSupport: "+STR(oMidiOutCaps.dwSupport)+CHR(13),0)

ENDIF
NEXT
* end of main
WAIT "Don't forget to press [ESC] in order to exit." WINDOW NOWAIT NOCLEAR
On Key Label ESC Do CLOSEOUT

Procedure CLOSEOUT
nFrmClose=1
For i = 1 To _Screen.FormCount
If Type("_SCREEN.FORMS(nFrmClose)") == "O"
_Screen.Forms(nFrmClose).Release()
Else
nFrmClose = nFrmClose + 1
Endif
Endfor
Set Sysmenu To Default
Modify Window Screen
Set Message To
Set Classlib To
Release All Extended
On Key
On Error
Clear Events
Release All
Close All
WAIT CLEAR
Return

DEFINE CLASS MIDIOUTCAPS As Session
#DEFINE MAXPNAMELEN 32
wMid=0
wPid=0
vDriverVersion=0
szPname=""
wTechnology=0
wVoices=0
wNotes=0
wChannelMask=0
dwSupport=0

PROCEDURE Init(cBuffer)
THIS.wMid = buf2word(SUBSTR(cBuffer, 1, 2))
THIS.wPid = buf2word(SUBSTR(cBuffer, 3, 2))
THIS.vDriverVersion = buf2dword(SUBSTR(cBuffer, 5, 4))

THIS.szPname = SUBSTR(cBuffer, 9, MAXPNAMELEN) + CHR(0)
THIS.szPname = SUBSTR(THIS.szPname, 1, AT(CHR(0),THIS.szPname)-1)

THIS.wTechnology = buf2word(SUBSTR(cBuffer, MAXPNAMELEN+9, 2))
THIS.wVoices = buf2word(SUBSTR(cBuffer, MAXPNAMELEN+11, 2))
THIS.wNotes = buf2word(SUBSTR(cBuffer, MAXPNAMELEN+13, 2))
THIS.wChannelMask = buf2word(SUBSTR(cBuffer, MAXPNAMELEN+15, 2))
THIS.dwSupport = buf2dword(SUBSTR(cBuffer, MAXPNAMELEN+17, 4))

ENDDEFINE

FUNCTION buf2dword(cBuffer)
RETURN Asc(SUBSTR(cBuffer, 1,1)) + ;
BitLShift(Asc(SUBSTR(cBuffer, 2,1)), 8) +;
BitLShift(Asc(SUBSTR(cBuffer, 3,1)), 16) +;
BitLShift(Asc(SUBSTR(cBuffer, 4,1)), 24)

FUNCTION buf2word(lcBuffer)
RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
Asc(SUBSTR(lcBuffer, 2,1)) * 256

PROCEDURE declare
DECLARE INTEGER midiOutGetNumDevs IN Winmm
DECLARE INTEGER midiOutClose IN Winmm INTEGER hmo
DECLARE INTEGER midiOutReset IN Winmm INTEGER hmo
DECLARE Sleep IN kernel32 INTEGER dwMilliseconds

DECLARE INTEGER midiOutOpen IN Winmm;
INTEGER @lphmo, INTEGER uDeviceID, INTEGER dwCallback,;
INTEGER dwCallbackInstance, INTEGER dwFlags
DECLARE INTEGER midiOutGetDevCaps IN Winmm;
INTEGER uDeviceID, STRING @lpMidiOutCaps,;
INTEGER cbMidiOutCaps

DECLARE INTEGER midiOutShortMsg IN Winmm;
INTEGER hmo, LONG dwMsg
RETURN

[/VFP]


Sat, 28 Mar 2020 07:22:08 GMT

Re: Report des Rencontres 2020
En zélé habitant du Vaucluse, dans la partie sud de la France qui commence pour les habitants de ce département dans la banlieue sud d'Orange, Francis pense que l'hiver commence, pour nous autres nordistes, dès le 15 août.

Donc il faut lire :"Une replanification probable pour cet automne ..."

Bon confinement à toutes et à tous.



Sat, 28 Mar 2020 07:22:08 GMT

Re: Connection ACCESS 2017 via ODBC
Pour les trois premiers ponts je me déclare incompétent.
Pour le quatrième je ne vois pas ce que la morale vient faire là-dedans.



Sat, 28 Mar 2020 07:22:08 GMT

midi message out winmm.dll a externe usb midi device
Bonjour,

L'exemple suivant fonctionne bien pour les sons intégrés. J'ai besoin d'envoyer un message à un périphérique USB-MIDI externe. Je n'ai pas besoin d'un changepatch, seulement des notes on et off, volume et vélocité.

Dans l'exemple Test, envoyez une note ici après avoir essayé quelque chose.

Comment changer ça?

Sincères amitiés,

Jan Flikweert

[vfp]
*play notes.prg
Close All
Clear All
oForm = Createobject("Tform")
oForm.Show(1)
WAIT "Don't forget to press [ESC] in order to exit." WINDOW NOWAIT NOCLEAR
On Key Label ESC Do CLOSEOUT
Read Events

Procedure CLOSEOUT
nFrmClose=1
For i = 1 To _Screen.FormCount
If Type("_SCREEN.FORMS(nFrmClose)") == "O"
_Screen.Forms(nFrmClose).Release()
Else
nFrmClose = nFrmClose + 1
Endif
Endfor
Set Sysmenu To Default
Modify Window Screen
Set Message To
Set Classlib To
Release All Extended
On Key
On Error
Clear Events
Release All
Close All
WAIT CLEAR
Return

Define Class Tform As Form
Protected midi
midi=Null
Height=182
Width=316
AutoCenter=.T.
Caption="Play MIDI Notes"
MaxButton=.F.
MinButton=.F.

Add Object Label1 As Label With AutoSize=.T.,;
BackStyle=0, Caption="Sound:", Height=17,;
Left=14, Top=20, Width=31

Add Object cmbProgram As ComboBox With Left=62,;
Top=15, Width=120, Height=24, Style=2

Add Object Label2 As Label With AutoSize=.T.,;
BackStyle=0, Caption="Note (0 to 127)", Height=17,;
Left=14, Top=62, Width=31

Add Object txtNote As Spinner With Height=24,;
KeyboardHighValue=127, KeyboardLowValue=0, Left=12,;
SpinnerHighValue=127, SpinnerLowValue=0,;
Top=86, Width=85, Value=48

Add Object Label3 As Label With AutoSize=.T.,;
BackStyle=0, Caption="Velocity:", Height=17,;
Left=120, Top=62, Width=46

Add Object txtVelocity As Spinner With Height=24,;
KeyboardHighValue=200, KeyboardLowValue=20, Left=108,;
SpinnerHighValue=200, SpinnerLowValue=20, Top=86,;
Width=85, Value=100

Add Object cmdPlay As CommandButton With Top=86,;
Left=200, Height=27, Width=48,;
Caption="Play", Default=.T.

Add Object cmdStop As CommandButton With Top=86,;
Left=250, Height=27, Width=48,;
Caption="Stop", Default=.T.

Add Object cmdDemo As CommandButton With Top=140,;
Left=12, Height=27, Width=100,;
Caption="Demo Sound", Default=.T.

Procedure Init
This.midi = Createobject("TMidiNote")
Thisform.ChangePatch

Procedure cmbProgram.Init
Local nIndex
For nIndex=0 To 127
This.AddItem("Program " + Ltrim(Str(nIndex)))
Next
This.ListIndex=1

Procedure cmbProgram.InteractiveChange
Thisform.ChangePatch

Procedure cmdDemo.Click
Thisform.PlayDemoSound

Procedure cmdPlay.Click
Thisform.PlayNote

Procedure cmdStop.Click
Thisform.StopNote

Procedure PlayDemoSound
This.midi.ChangePatch(117)
This.midi.PlayNote(54, 100)
Sleep(150)
This.midi.PlayNote(50, 100)
Sleep(100)
This.midi.PlayNote(48, 100)
Sleep(70)
This.midi.PlayNote(44, 100)

DoEvents
This.ChangePatch

Procedure ChangePatch
Local nProgram
nProgram = This.cmbProgram.ListIndex-1
This.midi.ChangePatch(m.nProgram)

Procedure StopNote
Local nNote
nNote = This.txtNote.Value
This.midi.StopNote(m.nNote)

Procedure PlayNote
Local nNote, nVelocity
nNote = This.txtNote.Value
nVelocity = This.txtVelocity.Value
This.midi.PlayNote(nNote, nVelocity)

Enddefine

Define Class TMidiNote As Session
#Define MIDI_STATUS_PLAYNOTE 9
#Define MIDI_STATUS_PATCH 12
Protected hDevice, channel
hDevice=12
channel=0

Procedure Init(lDeclare)
This.Declare
If Not This.OpenDevice()
Return .F.
Endif

Procedure Destroy
This.CloseDevice

Protected Function OpenDevice() As Boolean
If midiOutGetNumDevs() = 0
Messagebox("No Midi Devices found.",;
48, "MIDI Error")
Return .F.
Endif

Local hDevice, nResult
hDevice=12
nResult = midiOutOpen(@hDevice, 0,0,0,0)
This.hDevice = m.hDevice
If nResult <> 0
Messagebox("Call to midiOutOpen failed: " +;
TRANSFORM(nResult), 48, "MIDI Error")
Endif
Return (m.nResult=0)

Protected Procedure CloseDevice
If This.hDevice <> 0
= midiOutReset(This.hDevice)
= midiOutClose(This.hDevice)
This.hDevice = 0
Endif

Procedure SendMIDICommand(b1, b2, b3, b4)
If This.hDevice <> 0
Local nMsg, nResult
nMsg = This.channel + Bitlshift(m.b1,4) +;
BITLSHIFT(m.b2,8) +;
BITLSHIFT(m.b3,16) + Bitlshift(m.b4,24)
nResult = midiOutShortMsg(This.hDevice, m.nMsg)
If nResult <> 0
Messagebox("Call to midiOutShortMsg failed: " +;
TRANSFORM(nResult), 48, "MIDI Error")
Endif
Endif

Procedure PlayNote(nNote, nVelocity)
This.SendMIDICommand(MIDI_STATUS_PLAYNOTE,;
nNote, nVelocity, 127)

Procedure StopNote(nNote)
This.SendMIDICommand(MIDI_STATUS_PLAYNOTE,;
m.nNote, 0, 0)

Procedure ChangePatch(nPatchNo)
This.SendMIDICommand(MIDI_STATUS_PATCH,;
nPatchNo, 0, 0)

Procedure Declare
Declare Integer midiOutGetNumDevs In Winmm
Declare Integer midiOutClose In Winmm Integer hmo
Declare Integer midiOutReset In Winmm Integer hmo
Declare Sleep In kernel32 Integer dwMilliseconds

Declare Integer midiOutOpen In Winmm;
INTEGER @lphmo, Integer uDeviceID, Integer dwCallback,;
INTEGER dwCallbackInstance, Integer dwFlags

Declare Integer midiOutShortMsg In Winmm;
INTEGER hmo, Long dwMsg
Return

Define Class MIDIOUTCAPS As Session
#Define MAXPNAMELEN 32
wMid=0
wPid=0
vDriverVersion=0
szPname=""
wTechnology=0
wVoices=0
wNotes=0
wChannelMask=0
dwSupport=0


Enddefine
Function buf2dword(cBuffer)
Return Asc(Substr(cBuffer, 1,1)) + ;
BitLShift(Asc(Substr(cBuffer, 2,1)), 8) +;
BitLShift(Asc(Substr(cBuffer, 3,1)), 16) +;
BitLShift(Asc(Substr(cBuffer, 4,1)), 24)

Function buf2word(lcBuffer)
Return Asc(Substr(lcBuffer, 1,1)) + ;
Asc(Substr(lcBuffer, 2,1)) * 256

[/vfp]

[vfp]
*Test send note
*Command button method click
Local nMsg, nResult
Do Declare
#DEFINE MIDI_STATUS_PLAYNOTE 9
#DEFINE MIDI_STATUS_PATCH 12
#DEFINE CALLBACK_NULL 0
PUBLIC result AS LONG,HMIDIOUT AS LONG ,outHandle AS LONG, inHandle AS LONG, hDevice AS Long
hDevice=11
*!* outHandle =11
*!* nResult = midiOutOpen(@outHandle, 0, 0, 0, CALLBACK_NULL)
*!* If nResult <> 0
*!* Messagebox("Call to midiOutOpen failed: " +;
*!* TRANSFORM(nResult), 48, "MIDI Error")
*!* Endif
nMsg = 1 + Bitlshift(9,4) +;
BITLSHIFT(36,8) +;
BITLSHIFT(100,16) + Bitlshift(100,24)
nResult = midiOutShortMsg(@hDevice, nMsg)
MESSAGEBOX("De boodschap:"+STR(nMsg),0)
sleep(150)
If nResult <> 0
Messagebox("Noot spelen mislukt: " +;
TRANSFORM(nResult), 48, "MIDI Error")
Endif
nMsg = 1 + Bitlshift(9,4) +;
BITLSHIFT(36,8) +;
BITLSHIFT(0,16) + Bitlshift(0,24)
nResult = midiOutShortMsg(@hDevice, nMsg)
If nResult <> 0
Messagebox("Noot uit zetten mislukt: " +;
TRANSFORM(nResult), 48, "MIDI Error")
Endif
sleep(150)
IF hDevice <> 0
= midiOutReset(hDevice)
= midiOutClose(hDevice)
hDevice = 0
ENDIF

[/vfp]


Sat, 28 Mar 2020 07:22:08 GMT

Re: Connection SQL
Bonjour,
le projet TASTRADE mélange des tables des vues, des vues sur des vues etc...
Il est donc difficile de trouver la raison du soucis..

Le lien de MIKE LEWIS n'a d'intérêt que d'éviter d'avoir à coder la gestion des accès en lecture / écriture vers une base externe SQL..
Le problème est ailleurs (je suppose que la notion d'index vient d'une erreur de logique d'utilisation des tables et vues!)
Normalement les vues qu'elles soient distantes ou locales servent:
- à extraire par requêtes SQL des données dans des curseurs pour ne présenter à l'application que les informations nécessaires à son bon fonctionnement
- à mettre à jour les modifications effectuées par l'application dans la base de données
A l'intérieur du code de construction d'une vue, il n'y a pas d'indexation:
- soit les indexes existent et sont posés sur les tables originelles avant la création de la vue
- soit sont posés après la création de la vue sur le curseur généré de la vue

L'erreur d'index est donc:
- soit une erreur d'utilisation d'une vue qui aurait due être indexée après sa création
- soit une erreur d'utilisation d'une relation entre une vue et une autre vue ou un curseur ou une table, relation basée sur un indexe inexistant.

Voilà pourquoi il nous est important de connaitre le code source des vues et de leurs utilisations lors du message d'erreur dans le projet VFP.
L'extrait partiel du code source doit essentiellement comprendre les structure des vues, et les lignes de code utilisant / ouvrant les vues lors du message d'erreur.

Cordialement
GLS


Sat, 28 Mar 2020 07:22:08 GMT

Re: Report des Rencontres 2020
Bonjour,

Un replanification probable pour cet hiver, dés qu'il y aura un peu de 'visibilité'...

Ceci n'empéchant pas de renseigner le sondage :
http://www.atoutfox.org/programme_rencontres_atoutfox_2020_sondage.asp

Cordialement
Francis




Sat, 28 Mar 2020 07:22:08 GMT

Re: Connection ACCESS 2017 via ODBC
Pas certain JC : car ça ferait beaucoup de monde... et ça dépasse le nombre de personnes autorisées en "rassemblement collectif"
(ceci dit les rassemblements individuels c'est délicat...)
;-)

Le sam. 28 mars 2020, 00h26 Jean-Claude Rivi=c3=a8re a écrit :
> Rassure toi, je suis sûr que c'était de justesse... Avec 64 bits, ça
> serait sans doute passé.
>
> JC (qui a honte de son intervention...)
>
>
> Le 27/03/2020 à 21:18, jpb a écrit :
> > Merde, suis trop court.
> >
> >
>
> .
>



Sat, 28 Mar 2020 07:22:08 GMT

Re: Connection ACCESS 2017 via ODBC
Jean-Pierre,

Pour la question 4 : Il te faudrait poster le journal complet des logs, afin de pouvoir faire une investigation technique.
à défaut nous expédier un échantillon pour pouvoir répliquer le phénomène.
;-)

Le ven. 27 mars 2020, 21h18 jpb a écrit :
> Merde, suis trop court.




Sat, 28 Mar 2020 07:22:08 GMT

Re: Connection ACCESS 2017 via ODBC
Rassure toi, je suis sûr que c'était de justesse... Avec 64 bits, ça
serait sans doute passé.

JC (qui a honte de son intervention...)


Le 27/03/2020 à 21:18, jpb a écrit :
> Merde, suis trop court.
>
>

Sat, 28 Mar 2020 07:22:08 GMT

Re: Connection ACCESS 2017 via ODBC
Merde, suis trop court.


Fri, 27 Mar 2020 07:22:08 GMT

Re: Connection SQL
Bonjour Gilles,
Pour me comprendre d'avantage; j'utilise la classe de saisie bon de commande Exemple fournie avec VFP9 « TASTRADE » celui ci utilise une base de donnés local.
J'ai transformé l'environnement de donnée de table en vues sur server SQL, avec des formulaires singles sa marche très bien.
Mais avec des form muti-tables comme le formulaire de saisie bon de commande sa pose de problème.
Avec des recherches sur la toile J'ai trouvé une classe sur le site MIKE LEWIS lien http://www.ml-consult.co.uk/foxst-25.htm
malheureusement je n'arrive pas a la déployé.
Peu tu m'aidez SVP.



Fri, 27 Mar 2020 07:22:08 GMT

Re: Visual Studio Code
Ok c'est fait


Fri, 27 Mar 2020 07:22:08 GMT

Re: Connection SQL
pour compléter la réponse de Gilles :

Soit, après que la vue soit ouverte, tu crées un index pour définir un ordre
donné soit cet ordre est défini dans la commande SQL correspondant à la vue
(clause ORDER BY).
Je ne sais pas quelle version de VFP tu as, mais dans VFP9, tu vas plutôt
utiliser LOCATE pour rechercher une ligne dans ta vue :
1) LOCATE est capable d'utiliser un index s'il existe et n'est pas perturbée
s'il y en a pas (il y a même une fonction LOCATE() à utiliser !)
2) ta vue n'est pas sensée donner beaucoup de lignes.

Jean à Grenoble

PS : on n'est pas sensé se vouvoyer ni s'appeler 'Monsieur' sur ce forum : vive
la convivialité ;-)

PS : ça fait du bien de répondre à une question sur ce forum en ces temps morts !!

Fri, 27 Mar 2020 07:22:08 GMT

Re: Connection SQL
Dans la méthode OpenTables() de votre formulaire vous avez :
- soit une commande / fonction qui utilise un index sur le curseur1 qui est le curseur d'une des vues
- soit une vue SQL qui utilise une colonne indexée et non localement existante sous VFP..

Vous serait-il possible de nous transmettre le code source de chacune des vues utilisées dans votre formulaire sur ce forum ?
Nous pourrions alors mieux diagnostiquer l'erreur..

Cordialement
GLS


Fri, 27 Mar 2020 07:22:08 GMT

Re: Connection SQL
Monsieur Jean
J'ai utilisé des vues pour chaque table (commandes- fournisseurs-ligne art).
lors de l'exécution je reçoit le message d"erreur suivant :
Repère d'index n"est pas connu pour l'objet Cursor 'Cursor1' Méthode; saisiecommande.dataenvironnement.Opentables


Fri, 27 Mar 2020 07:22:08 GMT

Re: Connection SQL
Bonjour Monsieur JEAN

Merci pour votre réponse.


Fri, 27 Mar 2020 07:22:08 GMT

Re: Connection SQL
Bonjour
+1
Cordialement
GLS


Fri, 27 Mar 2020 07:22:08 GMT

Re: Connection ACCESS 2017 via ODBC
Bonjour Jp

Bravo, je ne connaissais pas l'astuce de la ligne de commande pour forcer l'installation de l'ODBC 32 bits quand celui de 64 bits est déjà installé..

Pour le point 4, contre le Covid-19, le distanciation sociale est de rigueur... mini 1 mètre entre deux personnes...

Amicalement
Gilles


Fri, 27 Mar 2020 07:22:08 GMT

Re: Connection SQL
bonjour,

le plus simple est de faire une vue distante par table. Tu peux même faire
plusieurs vues pour une seule table (pour changer l'ordre d'affichage, pour
automatiser la saisie d'un code postal ou d'une ville, ....). Une suggestion :
le nom de la vue peut être long pour bien indiquer ce qu'elle fait et tu
l'ouvres avec un alias court pour le formulaire.

Dans le formulaire, la seule chose à faire est de bien mettre l'alias de la vue
devant le nom du champ dans la propriété recordsource ou controlsource.

Bonne journée

Jean à Grenoble
Fri, 27 Mar 2020 07:22:08 GMT

Connection SQL
J'ai un fomulaire avec un environnement de données local (03 tables), je veux changer mon environnement vers sql server.
J'utilise les vues distantes pour me connecter à SQL avec un formulaire qui se base sur une seul table je la transforme en vue est sa marche très bien.
Comment pour mon formulaire multi tables.
Es ce que j'utilise trois vues séparées pour chaque table ou bien une seul vue basée sur trois tables.
Merci pour votre aide.


Fri, 27 Mar 2020 07:22:08 GMT

Re: Connection ACCESS 2017 via ODBC
Salut Gilles,

Merci pour tes éclaircissements. Grace à ça j'ai réussi à faire ma connection.
Je résume la manip pour ceux qui seraient intéressé, il s'agit de l'installation du driver 32bits sur un PC 64bits :
- Télécharger le driver AccessDatabaseEngine en 32 bits sur le site Microsoft
- Eventuellement désintaller le driver 64 bits s'il existe déja
- Si vous disposez de Office 64 bits (ce qui est probable) vous ne pourrez pas lancer l'installation en double-cliquant sur AccessDatabaseEngine.exe
- il faut alors passer en ligne de commande (CMD en tant administrateur) et taper AccessDatabaseEngine.exe /passive
Cela va forcer l'installation et ensuite, tout roule, comme dirait nos amis canadiens.
C'est parfait, et je vais pouvoir passer au point 4 en toute sérénité.
A+
JP



Fri, 27 Mar 2020 07:22:08 GMT

Re: Connection ACCESS 2017 via ODBC
Bonjour JP

La question 4 étant sans ébat ni débat, je passe aux autres:

Le driver ODBC doit être installé sur le serveur avec l'application VFP. L'odbc doit obligatoirement être en 32 bits sinon VFP ne pourra l'utiliser..
La chaine de connexion dépend du paramétrage de la base ACCES et de son serveur d' hébergement..
Il faut vérifier les parefeu sortant et en entrant sur les 2 serveurs et ouvrir les accès et ports en fonction du mode de communication entre les 2 serveurs (IP, VPN, partage dossiers / fichiers, etc...) ainsi que les anti-virus..

J'espère que cela sera suffisant, sinon il te faudra remettre la question 4 au débat!!

Amicalement
Gilles


Thu, 26 Mar 2020 07:22:08 GMT

Connection ACCESS 2017 via ODBC
Bonjour à tous,

Voici la problématique :
- serveur 1 : windows 2019 server 64 bits contenant une base ACCES 2017 64 bits
- serveur 2 : windows 2016 server 64 bits contenant mon programme VFP (32 bits)

Mon programme lance un SQLSTRINGCONNECT mais impossible de se connecter :
lcConnStr = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq="+cTable_access+";Uid=Admin;Pwd=gttb"

Le aError me donne plus de précision : "Erreur de connectivité [Microsoft] [Driver ODBC]..."

Question :
- Le driver ODBC doit-il être installé sur le serveur 1, le serveur 2 ou sur les 2 serveurs ?
- S'agit-il d'un driver ODBC 32 bits ou 64 bits ?
- En dehors de créer un 'source de données utilisateur', dois-je faire autre chose ?
- Est-ce que j'ai le droit d'adopter un comportement que la morale réprouve avec ma compagne dans le cadre d'un confinement total ?

J'ai 2 clients qui ont ce même programme. Lors de changement de la version d'ACCESS chez ces 2 clients, j'ai juste modifié ma chaine de connexion, recompilé le programme et c'est tout. Chez le 1ier client, ça a marché instantanément, chez le second, rien à faire.
Par ailleurs, sur mon PC de développement (Win 10 pro) ça ne marche pas non plus.
Je subodore qu'il s'agit que d'un pb de driver ODBC, mais aprés moults essais, je n'arrive toujours pas à connecter à ACCESS et je n'arrive pas à reproduire le contexte du premier client, chez qui tout marche parfaitement.

Toute suggestions sera la bienvenue (sauf en ce qui concerne la question 4, c'est trop tard).
Merci d'avance.
JP


Thu, 26 Mar 2020 07:22:08 GMT

Report des Rencontres 2020
Bonjour à tous,

Nous avions programmé les prochaines Rencontres 2020 pour fin mai, à un moment où rien ne laissait prévoir que la situation générale évoluerait vers les conditions que nous connaissons actuellement. Deux mois seulement nous séparent encore de la date prévue, et nous ne sommes pas en mesure de savoir si les mesures de confinement seront levées suffisamment tôt pour nous permettre de nous réunir sereinement à Lyon aux dates prévues.

Par conséquent, le Comité a décidé à l'unanimité de reporter les Rencontres à une date ultérieure. Nous ne manquerons pas de vous tenir informés dès que nous en saurons plus...

Merci à tous pour votre compréhension,

Pour le comité AtoutFox, son président
Jean-Claude Rivière

PS : un mailing viendra compléter ce message pour prévenir ceux qui ne consultent pas régulièrement ce groupe de discussion ; désolé pour la gêne occasionnée.


Wed, 25 Mar 2020 07:22:08 GMT

Re: Insertion d'image dans un PDF
hello there


Mon, 23 Mar 2020 07:22:08 GMT

Re: Insertion d'image dans un PDF
Bonjour Gilles,

Effectivement, le PDF est déjà existant.
Mais entretemps j'ai trouvé la solution. J'utilise déjà un composant pour le traitement d'image, Image Viewer, qui fait également de l'OCR et de la gestion de PDF, et ce composant dispose d'une fonction permettant d'insérer une image, à un endroit donnée en x,y.
C'est donc exactement ce que je recherchais, il fallait juste connaitre les sens du mot 'overlay' car toute la doc est en anglais.
A+
JP


Tue, 17 Mar 2020 07:22:08 GMT

Re: Insertion d'image dans un PDF
Bonjour Jean Pierre,
J'imagine que ta question sous-entend que le PDF est déjà existant avant d'y insérer une image ?

Si c'est oui, je ne connait malheureusement pas de solution à t'indiquer..

Amicalement
Gilles


Tue, 17 Mar 2020 07:22:08 GMT

Re: Visual Studio Code
Bonsoir Alain,

J'ai fais cela il y a quelques temps, et présenté lors d'une session aux rencontres atoutfox

https://github.com/FrancisFaure/vfp_tmlanguage_generator

Cordialement
Francis

Le mar. 11 février 2020, 15h09 alahem1 a écrit :
> Bonjour,
>
> Y a t il un moyen de remplacer l'editeur texte de l'IDE de VFP 9 par un autre comme par ex Visual Studo Code
>
> Bonne journée
>
> Alain



Mon, 16 Mar 2020 07:22:08 GMT

Re: Visual Studio Code
Bonjour,

Utiles Google at chercher "how to use txt editor vfp9" plusieurs responses.
cordialement
Koen


Mon, 16 Mar 2020 07:22:08 GMT

Re: Connection COM balance Avery Berkel FX120
Donnez moi plus d'info ca fait plusieurs années que je l'ai fait maintenant je suis en modbus je peu surement vous aider



Mon, 16 Mar 2020 07:22:08 GMT

Re: Connection COM balance Avery Berkel FX120
J'ai finalement les donnees techniques de c emateriel ai pu developper mon applicatif en choisissant un protocole DIALOG
Merci et bon dev .. a votre disposition pour toute question
Merci



Mon, 16 Mar 2020 07:22:08 GMT

Re: Envoyer des SMS par foxpro
Bonjour,

vous pouvez télécharger un fichier avec le bouton 'Contributions' et en utilisant le lien 'ajouter un article'

Cordialement,

Koen


Mon, 16 Mar 2020 07:22:08 GMT

Insertion d'image dans un PDF
Bonjour à tous,

Je suis à la recherche d'un composant (ocx/dll) permettant d'insérer un fichier image (jpg,bmp,png) dans un fichier PDF, avec la possibilité de faire passer la position de l'image dans le fichier PDF, tout ça par programmation évidemment.
Est-ce que quelqu'un connait un produit permettant de faire ce genre de chose ?
Merci d'avance.
JP


Mon, 16 Mar 2020 07:22:08 GMT

Re: Envoyer des SMS par foxpro

Bonjour,

Effectivement j'ai une copie du dossier.

Comment faire pour le mettre à la disposition de tout le monde.

Bonne journée.

Alain


Fri, 14 Feb 2020 07:22:08 GMT

Re: Connection COM balance Avery Berkel FX120
Bonsoir,
je ne suis pas chez moi et je n'arrive pas à me connecter à Atoutfox. J'ai un
document en anglais sur ce protocole. Je te l'envoie si tu me donnes une @ à
jsm.maurice (c'est mes initiales et mon nom de famille) avec un arrow base et le
ouanadou poin efferre

A+

Jean à Grenoble
Thu, 13 Feb 2020 07:22:08 GMT

Re: Private All Except ...
Merci Francis, mais ça ne fonctionne pas : ci-dessous un code modifié qui correspond mieux à ce que je cherche. De fait, le programme plante car il me faudrait conserver en non-privé toutes les variables "_*" ET toutes celles "g*".

Bon, la conclusion est que je vais renommer mes variables "g*" en "_*".

Luc

[VFP]
clear

Public gTata
_tonton = 1
gTata = 2

do down

? "Main", _tonton, gTata && Displays "Main", 1, 2

procedure down
private all Except _* && si on laisse cette ligne, la variable gTata ne sera plus accessible ci-dessous
private all Except g* && si on laisse cette ligne, la variable _tonton ne sera plus accessible ci-dessous
* Je ne souhaite pas redéclarer ces variables, mais continuer d'accéder à leurs valeurs définies avant
* C'est pour cela que l'on fait un "private all EXCEPT"
* _tonton = 50
* gTata = 100
? "Down", _tonton , gTata && Displays "Down", 50, 100
endproc[/VFP]


Thu, 13 Feb 2020 07:22:08 GMT

Re: Envoyer des SMS par foxpro
Alain,
Le fiche n'existe plus chz Foxite. Si vous avez une copie je propose que tu publiser dans cette forum
Cordialement.,
Koen


Thu, 13 Feb 2020 07:22:08 GMT

Re: Connection COM balance Avery Berkel FX120
Bonjour,

J'ai abandonné la balance Avery car je ne trouvait pas de doc ni sur le protocole, ni sur la partie programmation.On a donc basculé sur une autre balance, une CAS PD-II, qui était livré avec une doc succinte mais suffisante pour réaliser la connection.
A+
JP


Wed, 12 Feb 2020 07:22:08 GMT

Re: Envoyer des SMS par foxpro

Bonjour,

C'est un telechargement à faire. Un dossier compressé "SMSPOOLER".

Comment le publier sur le forum?

Bonne journée.

Alain


Wed, 12 Feb 2020 07:22:08 GMT

Re: Envoyer des SMS par foxpro
Alain,
Le fiche n'existe plus chz Foxite. Si vous avez une copie je propose que tu publiser dans cette forum
Cordialement.,
Koen


Wed, 12 Feb 2020 07:22:08 GMT

Re: Envoyer des SMS par foxpro

Bonjour,

Si cela peut etre utile :

https://www.foxite.com/news.aspx?id=161&topic=downloads-smspoolerzip

bonne journée.

Alain


Tue, 11 Feb 2020 07:22:08 GMT

Re: Connection COM balance Avery Berkel FX120
Le ven. 28 juin 2019, 01h18 jpb a écrit :
> Bonjour à tous,
>
> Quelqu'un aurait-il déjà connecté une balance Avery Berkel, modéle FX110/120 à un PC par l'intermédiaire d'un port COM ?
> Impossible de trouver le protocol de communication pour pouvoir dialoguer avec cette balance.
> Cordialement.
> Jean-Pierre Bataille
>
>
Bonjour
Je suis confronté au même souci
Par quel moyen connaitre / modifier le protocole et les parametres RS232 de la balance
et eventuellement les données techniques du protocole
Avez vous trouvé une solution de votre coté?
Merci d'aavance

> .
>



Tue, 11 Feb 2020 07:22:08 GMT

Visual Studio Code
Bonjour,

Y a t il un moyen de remplacer l'editeur texte de l'IDE de VFP 9 par un autre comme par ex Visual Studo Code

Bonne journée

Alain


Tue, 11 Feb 2020 07:22:08 GMT

Re: Private All Except ...
Bonjour Luc,

essayer :

[VFP]
private all _*
private all g*
[/VFP]

test :

[VFP]
clear

_tonton = 1
gTata = 2

do down

? "Main", _tonton, gTata && Displays "Main", 1, 2

procedure down
private all _*
private all g*
_tonton = 50
gTata = 100
? "Down", _tonton , gTata && Displays "Down", 50, 100
endproc
[/VFP]

Mais ce n''est pas beau du tout... mieux vaudrait privatiser les variables utilisées dans la procédure :

Private gTata, gTonton, ....
Voir même un "LOCAL var1, ...." serait mieux ?

Cordialement
Francis




Mon, 10 Feb 2020 07:22:08 GMT

Private All Except ...
Bonjour à tous

Dans un vieux code, je rencontre la ligne
private all except _*
Cette ligne rend privées mes nouvelles variables globales, qui commencent par la lettre "g"
J'ai donc essayé d'exclure aussi ces variables de l'instruction private, avec de nombreuses variantes de
private all except _*,g*
Malheureusement, aucune de ces variantes n'a fonctionné, alors que
private all except g* me conserve bien mes variables globales, mais évidemment elle privatise les variables _* qu'il faudrait épargner aussi

Quelque'un a-t-il une idée de la manière d'écrire cette clause d'exclusion pour y inclure à la fois _* et g* ?

Merci d'avance

Luc




Mon, 10 Feb 2020 07:22:08 GMT

Re: Re=3a Mise =c3=a0 jour table PGSql depuis VFP9 dans une grille
Of course my dear!!

Amicalement
Gilles


Wed, 29 Jan 2020 07:22:08 GMT

Reproduction totale ou partielle strictement interdite • Propulsé par KitWeb • Hébergement Wan AgainValid XHTML 1.0 Transitional