Basic Program In Foxpro

  • 14 Comments!
Basic Program In Foxpro Average ratng: 7,0/10 7389votes

Foxpro Basic Commands. Live to Learn. 08 DCA PGDCA Fox Pro (Programming Using Fox pro) - Продолжительность: 30:19 TOMAR INSTITUTE OF COMPUTER 28 658 просмотров.

Ну, я сейчас вроде как решил эту проблему. Я сделал так. Создал Базу данных в Вижуал ФоксПро. Создал Таблицу с полями и заполнил пару записей. Экспортировал в ФоксПро 3.0 (File ->Export.) Затем приступил к VB и поначалу всё пошло как по маслу - я разместил контрол на форме, выбрал файл с таблицей 3 версии фокса, разместил на форме три текстбокса, настроил их DataField DataSource.

В итоге все запустилось и те две-три записи норм отображаются. А вот как решил сделать так, чтобы записи можно было новые добавить - так никак не могу и всё тут! Вроде как Data1.Recordset.AddNew должно работать, но ругается ошибкой 3027, мол только для чтения. Хотя свойство контрола риад-онли выставлено в фэлс и какого рожна ей еще надо - непонятно.:( Это все также - по поводу ФоксПро, так что думаю я не отошел от темы.:) Что делать? Цитата (Akina @ 9.11.2009, 09:15 ) Контрол Data работает с рекордсетом. Ему плевать, по какой технологии и через какую библиотеку рекордсет создан, какого он типа и т.п. - все недопустимые для рекордсета операции заканчиваются ошибкой, которую контрол, не разбираясь, преподнесёт юзеру.Создай рекордсет, допускающий обновление и добавление, и укажи его контролу как источник данных.

И будет тебе щастье. И не будет ошибок. И не надо будет формат преобразовывать.

Путем научных изысканий я установил (красиво звучит, правда? ), что причина в том, что Data1.Recordset.Updatable равно False (в отличие от Data1.ReadOnly и Data1.Database.Updatable, которые стоят в False и True соответственно). Ну т.е., как ты и говоришь - рекордсет не допускает обновление и добавление. А как мне создать такой рекордсет, который допускал бы это?

Цитата (Akina @ 9.11.2009, 16:34 ) Ну наверное ручками создать и открыть такой рекордсет, а потом сказать контролу, что этот рекордсет и есть его источник данных. Пробую так Dim rs As DAO.Recordset Dim sSQL As String sSQL = 'SELECT * FROM mytable;' Set rs = Data1.Database.OpenRecordset(sSQL) rs.AddNew rs('NOMER') = '3' rs('NAZVANIE') = 'bla-bla' rs('TEKST') = 'ha-ha' rs.Update не хочет - так же ругается на реад-онли в строке rs.AddNew Я проверил - MsgBox rs.Updatable - пишет False А как, чтобы тру?:cry. Цитата Для добавления и изменения записей используется похожая технология. При добавлении записи открываем рекордсет. Dim db As DAO.Database 'Объявляем базу данных Dim rs As DAO.Recordset 'Объявляем рекордсет Dim sSQL As String 'Переменная, где будет размещён SQL запрос Set db = DAO.OpenDatabase ('C: db.mdb') sSQL = 'SELECT * FROM Orders;' Set rs = db.OpenRecordset (sSQL) Для добавления записи используется метод AddNew объекта типа Recordset.

Rs.AddNew Теперь запись добавлена, и мы заполняем все поля для данной записи. Я адаптировал этот код под свой (наверху), а он не работает. Как я уже сказал - Updatable рекордсета стоит в False. Окрой VB6, в меню Projects ->Components выбери MicroSoft ADO Data Control VB6 нарисуй на форме.

Потом опять же в меню Projects ->Components выбери DataGrid (если нужно править данные ручками в табличном объекте) или MSHFlexGrid (если нужно просто отображать результат запроса). Налепи их на форму. В свойствах объекта MSHFlexGrid1 выбери DataSource=Adodc1 - соединили - теперь при выборке данные будут отображаться в Гриде.

Voldemar2004 Большое спасибо за очень полезную инфу. Только два момента 1. Когда я пытался создать КоннекшнСтринг с MicroSoft OLE DB Provider for ODBC Driver - он писал ошибку. Поэтому я выбрал MicroSoft OLE DB Provider for Visual FoxPro. Все остальное я сделал по инструкции - и заработало! Таблица норм отображается.

Но она не редактируется! Пишет ошибку 'Произошли ошибки во время выполнения многошаговой операции. Инструкция К Мотортестеру Мт 5.

Проверьте значения всех состояний.' Я ставил Mode в 3 - т.е. Запись/чтение MSHFlexGrid я не нашел (юзал DataGrid) - как он точно называется? Akina, тебе также - большое спасибо!:) -------------- Еще 1 момент! Пробую Adodc1.Recordset.AddNew 'nomer', '3' и он действительно добавляет новую строчку в таблице, но одновременно ругается ошибкой 'Недостаточно сведений из основной таблицы для обновления':(.

Теперь вы имеете в системе Visual FoxPro возможность использовать широкие функциональные преимущества технологии COM по реализации внешних Интерфейсов и Связыванию и обработке как внутренних, так и внешних Событий. В младших версиях Visual FoxPro тоже поддерживались простейшие процессы Привязки событий Серверов COM, однако реализовывалась только Клиентская часть Позднего Связывания. Теперь система Visual FoxPro выполняет поддержку Клиентской части Раннего Связывания.