Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
je débute en powerbuilder et j'ai besoin d'une petite aide !
j'ai fait quelques recherches dans l'aide de pb et sur le web, et apparement on peut créer une datawindow au moment de l'exécution.
donc je crée ma syntaxe dynamiquement dans une String ls_syntax(que j'ai testé en la récupérant et qui compile et marche), et ensuite j'appelle dw.Create(ls_syntax)
mais je ne vois rien de différent, la datawindow dw garde ses colonnes antérieures.
petite précision : je crée un datawindow pour importer des données depuis un fichier CSV avec ImportFile, dans lequel la premiere ligne contient les colonnes à importer.
autre chose : j'ai créé dans le painter de ma fenetre une instance de ma datawindow, est ce que le problème peut venir de la, cad qu'il est impossible de remplacer cette datawindow ?
si vous savez pourquoi, ou si c'est tout simplement impossible de faire ça, merci de m'aider !
bonne soirée et we
PS: ma syntaxe générée à l'exécution(je le répète testée mais allégée en nombre de colonnes )_:
release 9; datawindow ( units=0 timer_interval=0 color=1073741824 processing=0 print.printername="" print.documentname="" print.orientation=0 print.margin.left=110 print.margin.right=110 print.margin.top=96 print.margin.bottom=96 print.paper.size=0 print.paper.source=0 print.canusedefaultprinter=yes selected.mouse=no) header(height=200 color="536870912" ) summary(height=0 color="536870912" ) footer(height=0 color="536870912" ) detail(height=84 color="536870912" ) table(column=(type=char(20) updatewhereclause=yes name=nom dbname="nom") column=(type=char(20) updatewhereclause=yes name=prenom dbname="prenom") ) text(band=header alignment="2" text="nom" border="0" color="33554432" x="5" y="4" height="64" width="549" html.valueishtml="0" name=nom_t visible="1" font.face="Arial" font.height="-10" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) text(band=header alignment="2" text="prenom" border="0" color="33554432" x="355" y="4" height="64" width="549" html.valueishtml="0" name=prenom_t visible="1" font.face="Arial" font.height="-10" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) column(band=detail id=1 alignment="0" tabsequence=10 border="0" color="33554432" x="5" y="4" height="76" width="549" format="[general]" html.valueishtml="0" name=nom visible="1" edit.limit=0 edit.case=any edit.autoselect=yes edit.autohscroll=yes edit.imemode=0 font.face="Arial" font.height="-10" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) column(band=detail id=2 alignment="0" tabsequence=10 border="0" color="33554432" x="355" y="4" height="76" width="549" format="[general]" html.valueishtml="0" name=prenom visible="1" edit.limit=0 edit.case=any edit.autoselect=yes edit.autohscroll=yes edit.imemode=0 font.face="Arial" font.height="-10" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" ) htmltable(border="1" ) htmlgen(clientComputedFields="1" clientEvents="1" clientFormatting="0" clientScriptable="0" clientValidation="1" generateJavaScript="1" netscapeLayers="0" netscapelayers="0" encodeSelfLinkArgs="1" ) export.xml(headGroups="1" includewhitespace="0" metadatatype=0 savemetadata=0 template=(comment="" encoding="UTF-8" name="dw_patient_min_template" xml="<?xml version=~"1.0~" encoding=~"UTF-8~" standalone=~"no~"?><patient_min><patient_min_row __pbband=~"detail~"><nom>nom</nom><prenom>prenom</prenom></patient_min_row></patient_min>")) import.xml() export.pdf(method=0 distill.customPostScript="0" xslfop.print="0" )
Hors ligne
Bonsoir,
Peut-être n'ai-je pas compris ton probleme, mais pourquoi ne créés tu pas une DW et ensuite tu crées un datastore avec cette datawindow dans ton code et tu l'utilise comme tu le veux?
désolé si j'ai pas compris !
Hors ligne
coucou,
lors de la creation dynamique de la dw, il n'y a pas d'erreurs ?
sinon, pourquoi creer dynamiquement cette dw ?
alors qu'il suffit de creer la dw...
de l'attribuer à une datastore... ect...et ca marche bien...
enfin, c'est que je fais.... je suis en ce moment dans les importations de fichiers justement...
je regarde pour ton cas.
A+
Hors ligne
merci d'avoir répondu
je débute en powerbuilder, donc je ne connais pas trop les datawindows, et encore moins les datastores !
je vais me pencher la dessus, et je vous dis si je trouve.
sinon si vous avez une explication sur les liens entre datastores et datawindows...
Hors ligne
regardes dans le forum
http://pbadonf.fr/forum/viewtopic.php?id=53
tu trouveras la reponse...
il y a aussi des cours...
Bon courage
Hors ligne
re coucou !
j'ai reussi a recupérer les données dans le datastore, je crois que je ne vais pas m'enquiquiner à les afficher dans une datawindow (je vois pas comment faire, a moins qu'il faille faire une copie dans une autre datawindow, je sais plus où j'ai vu ça), mais plutot essayer de directement les insérer dans une base de données (nouvelle mission !)
en tout cas j'aime bien ce forum, je pense que je vous allez me voir souvent !
merci et continuez comme ça !
Delphine
Aperçu de ce que j'ai fait (is_data est un fichier CSV avec une première ligne contenant les noms des colonnes)
c'est tout simple mais ça a pas été facile de le faire pour une débutante comme moi !
string ls_syntax, ls_header, ls_err long pos, colNum // mettre les colonnes de l'entête du fichier is_data dans un array pos = Pos(is_data, "~n") ls_header = Mid(is_data, 0, pos - 2) nb_columns = StringToArray(ls_header, ",", is_data_headers) // créer la définition de la datawindow à associer au datastore ls_syntax = "release 9; datawindow() table(" FOR colNum = 1 TO nb_columns // crée chaque colonne récupérées dans l'en-tete du fichier ls_syntax += 'column=(type=char(255) name=' + is_data_headers[colNum] + ' dbname="' + is_data_headers[colNum] + '")~r~n' NEXT ls_syntax += ')' // créer le datastore et la datawindow pour importer ensuite les données ds_patient = CREATE DataStore IF ds_patient.Create(ls_syntax, ls_err) = -1 THEN MessageBox("Erreur", "erreur de création de la datawindow associée au datastore~r~n" + ls_err) END IF ds_patient.ImportFile(CSV!, nom_input, 2)
Hors ligne
et tout fonctionne ?
tu as réussi à faire un update de ta datastore ou datawindow ?
tu testes aussi les codes de retour d'erreurs ?
Attention, la difference entre la datastore et la datawindow, lorsque tu fais un update, tu n'auras pas de message d'erreur s'il y a lieu....
A+ et bienvenue parmi nous
Hors ligne
bienvenue ici tu vas voir on s'y sent bien :D
Hors ligne