2017-01-10 11 views
0

アクセスのフィールドから一部のデータ(値= 0)を消去しようとしていますが、名前がわからず、データベース内のフィールドの位置のみがわかります(13桁)。私はそれが非常に簡単だと思ったが、多くの試行の後でも私はまだ解決策を見つけることができず、それが可能かどうか疑問に思う。名前のないフィールドからデータを消去するacess vba

Sub Erasevalues0() 
Dim strQValue As String 
Dim i As Integer 
Dim db As DAO.Database 
Dim sql13 As String 

Set db = CurrentDb 

sql13 = db.TableDefs("TableName").Fields(13).Name 

strQValue = "DELETE FROM TableName WHERE sql13=0;" 
db.Execute strQValue 

End Sub 

私も何かしようとした:

strQValue = "DELETE FROM TableName WHERE Fields(13)=0;" 

をしかし、何も動いていないようにみえ

だからこれは私が使用していたコードです。助言がありますか?

+0

なぜフィールドの序数に基づいて削除するのですか? – Comintern

+0

それはExcelからインポートされたため、フィールドの名前はわずかに変更できますが、位置は変更できません。 –

答えて

0

私はあなたがレコードセットをループする必要があると思います。以下は動作するはずです

Sub RemoveZeros() 

Dim db As Database 
Dim rs As Recordset 

Set db = CurrentDb 
Set rs = db.OpenRecordset("Table1", dbOpenDynaset) 

rs.MoveFirst 
With rs 
Do Until .EOF 
    If .Fields(13) = 0 Then .Delete 'Delete row if column 13 = 0 
    .MoveNext 'Move to next record 
Loop 
End With 
rs.Close 

Set rs = Nothing 
Set db = Nothing 

End Sub 
+0

ありがとうございます。完璧に動作します。とても感謝しています –

0

フィールドのインデックスを直接使用する方法があるかどうかは不明です。回避策:

query = "SELECT * FROM TableName" 
columnName = CurrentDb.OpenRecordset(query).Fields(13).Name 

strQValue = "UPDATE TableName " & _ 
      "SET " & columnName & "=''"