Question

J'écriture d'une application en langage C ++ qui interfaces avec SPSS 15 en utilisant leur DLL E / S.

Notre base de données SPSS est faite d'un certain nombre de cas, chacun avec leur champ « ID » unique.

Ce que je dois faire est d'ouvrir la base de données en lecture / écriture, trouver le cas avec l'ID correspondant et de modifier certaines des variables en fonction des fichiers CSV que mes Parsis programme.

Il y a 2 cas évidents dès le début:

  • Le cas de correspondance n'existe pas (Dans ce cas, je peux facilement utiliser pour ajouter le cas spssOpenAppend ().

  • Le cas correspondant existe. (Ce qui est le cas problématique)

Dans ce dernier, je dois utiliser spssOpenWriteCopy () pour obtenir une poignée d'écriture et spssOpenRead () pour une poignée de lecture. Bien que je ne suis pas trop vif à ce sujet, il semble que c'est la seule façon de le faire avec leur DLL. Le problème est que je ne peux pas déplacer le pointeur de cas sur le fichier d'écriture (Apparemment, déplacer le pointeur de cas est une opération de lecture seule)

Cela signifie que je suis coincé à essayer de comprendre comment modifier un cas sans avoir à itérer sur tous les fichiers et copier toutes les données, au cas par cas, jusqu'à ce que je trouve le cas, je me intéresse.

Je voudrais ajouter que SPSS mise à niveau ne sont pas une option.

Je tiens aussi à éviter d'avoir à cas par cas manuellement itérer et construire un nouveau fichier à partir de zéro.

Était-ce utile?

La solution

Je figure ne va répondre à la peine maintenant qu'il est résolu.

Quoi qu'il en soit, il est impossible d'insérer un cas au milieu d'une base de données. Vous pouvez wrappers potentiellement écrire autour de l'API pour le simuler, mais sinon il n'y a aucun moyen de faire ce que je suis en train de le faire sans itérer manuellement dans chaque cas et le copier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top