Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: VB

Программирование VB

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: VB.Net + Access
 
 автор: ДрЮня   (02.08.2010 в 14:50)   личное сообщение
 
 

Всем доброго времени !
Никак не удается получить ID новой добавленной записи в таблицу аксеса.
ID - AutoNumder поле в этой таблице.
Никто кусочком кода не поделиться ?

  Ответить  
 
 автор: kot_k_k   (03.08.2010 в 10:27)   личное сообщение
 
 

rst.Bookmark = rst.LastModified - для VB - переход на последнюю добавленную/измененную запись в рекордсете, а как .Net - ХЗ

  Ответить  
 
 автор: Мюллер   (03.08.2010 в 10:54)   личное сообщение
 
 

Dim conn1 As New SqlConnectionStringBuilder()
conn1.DataSource = serv ' имя сервера
conn1.InitialCatalog = bas 'имя базы
conn1.IntegratedSecurity = True

Dim cn1 As New SqlConnection(conn1.ConnectionString)

'Using cn1 As New SqlConnection(conn1.ConnectionString)
cn1.Open()
strSQL1 = " текст запроса"

Dim cmd1 As New SqlCommand(strSQL1, cn1)
Dim rdr1 As SqlDataReader = cmd1.ExecuteReader()
Do While rdr1.Read

Me.ИмяПоля.Text = (rdr1("AutoNumder"))

Loop
rdr1.Close()
cn1.Close()


Тут пример как подсоединиться к SQL-SERVER - у. Для соединения с аксесом нужно использовать ОЛЕДБ конекшин.
А так принцип тот же - данные загоняются в датаридер, и потом из него считываются. В данном случае в поле будет переданы по очереди все записи из датаридера, но останется последняя запись датаридера.

Если вопрос о том какой синтаксис у ОЛЕДБ - могу поискать. Где-то я его использовал, правда не помню где.

  Ответить  
 
 автор: ДрЮня   (03.08.2010 в 11:11)   личное сообщение
 
 

Спасибо,
искать не нужно, я с OLEDB уже работаю
просто команда
cmd1.ExecuteReader()
заполнит ридер
но если в запросе
strSQL1 = " текст запроса"
данные отсортированы по дате да еще в обратном порядке, то вернет не последнюю добавленную запись, а первую, которая была добавлена давно

ПС
как просто было работать с редордсетами в ADODB...

  Ответить  
 
 автор: Мюллер   (03.08.2010 в 11:18)   личное сообщение
 
 


ПС
как просто было работать с редордсетами в ADODB...



По началу тоже так думал. Сейчас поменял мнение полностью на противоположное.

Тут есть два варианта - либо менять источник для датаридера, изменив сортировку, либо ввести критерий отбора в источник для датаридера так, чтобы запрос возвращал всего одну запись.

  Ответить  
 
 автор: ДрЮня   (03.08.2010 в 11:44)   личное сообщение
 
 

вполне вероятно, я только месяц начал ковырять сие творение...

  Ответить  
 
 автор: DreamCatcher   (04.08.2010 в 16:47)   личное сообщение
 
 


int maxID=0;
String SQLString = "SELECT max(ID) FROM <tablename>";
OleDbCommand cmd = new OleDbCommand(SQLString, cnn);
OleDbDataReader drd = cmd.ExecuteReader();
if (drd.HasRows)
{
          if(drd.Read()) maxID=drd.GetInt32(0);
}


Хотя лучше возвращать ID по условию, которое формировать из значений вставляемой строки

insert into sometable(f1,f2,f3) values('1',2,'3')

select max(ID) from sometable where f1='1' and f2=2 and f3='3'

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList