0

VB6でDAOを使用して、FoxPro2.6DBFファイルにいくつかの列を追加する必要があります。

データが.MDBファイルにある場合、これが機能することはわかっています。.MDBに使用するコードスニペットは次のとおりです。

Set tdfCoParms = mDBParms.TableDefs(CoParms)
tdfCoParms.Fields.Append tdfCoParms.CreateField("CoName", dbText, 30)

これがFoxProで機能するかどうかはわかりません。(私は試していません)

これは可能ですか?正しい構造の空のテーブルから始めて、これからSELECTのINSERTを使用して、既存の入力済みファイルからレコードをコピーすることで、可能な代替手段があります。これは機能することはわかっていますが、それほど便利ではありません。

4

1 に答える 1

0

あなたの解決策は確かに機能するので、@wqwに感謝します。

これは私の最初の選択肢であり、うまくいきました。

  1. 目的の列を含む空のファイル/テーブルを作成します。
  2. このファイルを「test.dbf」にコピーします。
  3. 入力されたデータファイル「リンク」からこれにレコードを挿入します。

    Dim dbsWork As Database
    Dim qrd As DAO.QueryDef
    Dim szSqlString As String

    Set dbsWork = OpenDatabase(szWorkDir, False, False, "FoxPro 2.5")
    Dim szFieldList As String
    szFieldList = "field1, field2, field3"
    szSqlString = "INSERT INTO test SELECT " & szFieldList & " FROM link"
    Set qrd = dbsWork.CreateQueryDef("", szSqlString)
    qrd.Execute

    Set qrd = Nothing
    Set dbsWork = Nothing

But the following based on @wqw's suggestion is much better, as no predefined file is required

Private Sub Test1()

    Dim dbsWork As Database
    Dim qrd As DAO.QueryDef
    Dim szSqlString As String

    Set dbsWork = OpenDatabase(MyDataBasPath, False, False, "FoxPro 2.5")
    Dim szFieldList As String
    szSqlString = "ALTER TABLE work.dbf ADD COLUMN fred VARCHAR(30)"
    Set qrd = dbsWork.CreateQueryDef("", szSqlString)
    qrd.Execute

    Set qrd = Nothing
    Set dbsWork = Nothing

End Sub
于 2012-12-25T14:53:56.577 に答える