Страница 1 из 1
Помогите! программирование в Access!
Добавлено: 16 окт 2009, 14:50
Letyga
Необходимо написать программку. приравнять одно поле к другому и записать результат в третье.
Не могу вызвать необходимую таблицу и совершить операции с полями и создать еще одно поле.помогите,пожалуйста!!

Спасибо=)
Re: Помогите! программирование в Access!
Добавлено: 20 окт 2009, 15:07
Letyga
strA = rs("F1").Value
strB = rs("F2").Value
strC = strA + "=" + strB
F1,F2 - это названия столбцов.
присвоение идет только по первой строке, как записать цикл присвоения по остальным строкам столбцов???помогите!!!плз=)
Re: Помогите! программирование в Access!
Добавлено: 20 окт 2009, 17:34
Teslenko_EA
Здравствуйте
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
Евгений.
Re: Помогите! программирование в Access!
Добавлено: 20 окт 2009, 19:06
mc-black
[offtop]Прошу прощения за оффтоп. Евгений, вы получали мое личное сообщение? Ответьте пожалуйста на мой вопрос: да или нет?[/offtop]
Re: Помогите! программирование в Access!
Добавлено: 21 окт 2009, 11:24
Letyga
Спасибо,Евгений!
У меня немного другая история.
вот текст программы,нужен цикл, а я даже не знаю по какому параметру.
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
Re: Помогите! программирование в Access!
Добавлено: 21 окт 2009, 17:24
Teslenko_EA
Здравствуйте 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]