Помогите! программирование в Access!

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Letyga
Сообщения: 3
Зарегистрирован: 16 окт 2009, 14:34

Необходимо написать программку. приравнять одно поле к другому и записать результат в третье.
Не могу вызвать необходимую таблицу и совершить операции с полями и создать еще одно поле.помогите,пожалуйста!! :confused:
Спасибо=)
Letyga
Сообщения: 3
Зарегистрирован: 16 окт 2009, 14:34

strA = rs("F1").Value
strB = rs("F2").Value
strC = strA + "=" + strB
F1,F2 - это названия столбцов.
присвоение идет только по первой строке, как записать цикл присвоения по остальным строкам столбцов???помогите!!!плз=)
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте Letyga.
подобный код поможет решить Вашу задачу:

Код: Выделить всё

Sub addField() 'добавление к существующим полям таблицы поля F3 - [I]"создать еще одно поле"[/I]
Dim d As DAO.Database, t As TableDef, f As Field
Set d = CurrentDb
Set t = d.TableDefs("Table1")
Set f = t.CreateField("F3", dbText, 20) 'DB_Integer
t.Fields.Append f
End Sub
Sub updateField() 'заполнение поля F3
Dim d As DAO.Database, rs As DAO.Recordset
Set d = CurrentDb
Set rs = d.OpenRecordset("select f1, f2, f3 from Table1")
Do Until rs.EOF
    If IsNull(rs(0)) Then
    ElseIf IsNull(rs(1)) Then
    Else
        rs.Edit
         ' [I]"приравнять"[/I] - речь о сравтении или о "сложении" (конкатенации)  [I]"strA + "=" + strB"[/I]
        'rs(2) = (rs(0) = rs(1)) 'результат сравнения полей
        rs(2) = rs(0) & "=" & rs(1) 'конкатенация полей
        rs.Update
    End If
    rs.MoveNext
Loop
End Sub
Евгений.
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

[offtop]Прошу прощения за оффтоп. Евгений, вы получали мое личное сообщение? Ответьте пожалуйста на мой вопрос: да или нет?[/offtop]
На заказ: VBA, Excel mc-black@yandex.ru
Letyga
Сообщения: 3
Зарегистрирован: 16 окт 2009, 14:34

Спасибо,Евгений!
У меня немного другая история.
вот текст программы,нужен цикл, а я даже не знаю по какому параметру.


Sub AAA()
Dim Connection As New ADODB.Connection
Dim Catalog As New ADOX.Catalog
Dim rs As New ADODB.RecordSet
Dim Field As Field
Dim provider As String
Dim DatabasePath As String
Dim strA As String
Dim strB As String
DatabasePath = "C:\Documents and Settings\Рабочий стол\CDA01 .mdb"
provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & DatabasePath
'Connection.Open provider'
FilePathName = "C:\Documents and Settings\Рабочий стол\CDA01 .txt"
'Set Catalog.ActiveConnection = Connection'
SQL = "SELECT *FROM CDA"
rs.Open SQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
'rs.Open SQL, Catalog.ActiveConnection, adOpenDynamic, adLockOptimistic'
rs.Fields.Refresh
strA = rs("F1").Value
strB = rs("F2").Value
strC = strA + "=" + strB

rs.Close
Open FilePathName For Output Access Write As #7
Print #7, strA, strB, strC
Close #7
Set FP = Nothing
Set Catalog = Nothing
'Connection.Close'
Set Connection = Nothing
End Sub
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Евгений,использовала ваш цикл, вот результат:

Sub AAA()
Dim Connection As New ADODB.Connection
Dim Catalog As New ADOX.Catalog
Dim rs As New ADODB.RecordSet
Dim Field As Field
Dim provider As String
Dim DatabasePath As String
Dim strA As String
Dim strB As String
DatabasePath = "C:\Documents and Settings\Рабочий стол\CDA01 .mdb"
provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & DatabasePath
'Connection.Open provider'
FilePathName = "C:\Documents and Settings\Рабочий стол\CDA01 .txt"
'Set Catalog.ActiveConnection = Connection'
SQL = "SELECT *FROM CDA"
rs.Open SQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
'rs.Open SQL, Catalog.ActiveConnection, adOpenDynamic, adLockOptimistic'
rs.Fields.Refresh
Do Until rs.EOF
If IsNull(rs(0)) Then
ElseIf IsNull(rs(1)) Then
Else
strC = rs(0) & "=" & rs(1) 'конкатенация полей
rs.Update
End If
rs.MoveNext
Loop
'strA = rs("F1").Value
'strB = rs("F2").Value
'strC = strA + "=" + strB
rs.Close
Open FilePathName For Output Access Write As #7
Print #7, strC
Close #7
Set FP = Nothing
Set Catalog = Nothing
'Connection.Close'
Set Connection = Nothing
End Sub

только вот запись только последней строки,как всё записать в текстовый файл??
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
УРАААААААААА!!!! У меня получилось. Евгений я тупица, подумала еще чуть чуть и применила ваш вариант и всё получилось.!!!!!!СПАСИБО!!! Вот мой труд!!!!и Ваш!!!!!

Sub AAA()
Dim Connection As New ADODB.Connection
Dim Catalog As New ADOX.Catalog
Dim rs As New ADODB.RecordSet
Dim Field As Field
Dim provider As String
Dim DatabasePath As String
Dim strA As String
Dim strB As String
DatabasePath = "C:\Documents and Settings\Рабочий стол\CDA01 .mdb"
provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & DatabasePath
'Connection.Open provider'
FilePathName = "C:\Documents and Settings\Рабочий стол\CDA01 .txt"
'Set Catalog.ActiveConnection = Connection'
SQL = "SELECT *FROM CDA"
rs.Open SQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
'rs.Open SQL, Catalog.ActiveConnection, adOpenDynamic, adLockOptimistic'
rs.Fields.Refresh
Open FilePathName For Output Access Write As #7
Do Until rs.EOF
If IsNull(rs(0)) Then
ElseIf IsNull(rs(1)) Then
Else
strC = rs(0) & "=" & rs(1)
rs.Update
End If
rs.MoveNext
Print #7, strC
rs.MoveNext
Loop
rs.Close
Close #7
Set FP = Nothing
Set Catalog = Nothing
'Connection.Close'
Set Connection = Nothing
End Sub
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте Letyga.
Ваша задача будет выполняться даже если в коде останутся только необходимые строки:

Код: Выделить всё

Sub AAA()
Dim rs As New ADODB.Recordset
Dim Sql As String, strC As String, i As Integer
Const sFileOut = "C:\CDA01.txt"
Sql = "SELECT * FROM CDA"
rs.Open Sql, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
i = FreeFile
Open sFileOut For Output Access Write As #i
Do Until rs.EOF
    strC = rs(0) & "=" & rs(1)
    Print #i, strC
    rs.MoveNext
Loop
rs.Close
Close #i
End Sub
Евгений.
P.S. при размещении на странице кода, для удобочитаемости заключайте его в теги [соde]...[/соde]
Ответить