Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Въпрос за ACCESS
http://mcu-bg.com/mcu_site/viewtopic.php?f=16&t=9905
Страница 1 от 2

Автор:  E1 [ Сря Фев 22, 2012 10:45 pm ]
Заглавие:  Въпрос за ACCESS

Налага ми се да направя едно поддържане на база от данни. Базата от данни създадох-таблици и релационни връзки, но имам сериозен проблем относно диалога за управлението. Как може да се направи излизащ диалогов прозорец, в който като въведа, например номер на клиент и номер на заявка, да направи проверка в таблицата със заявките, дали срещу този клиент е записана тази заявка? Със "справки" ли става това или трябва да се ползва нещо друго(например да се прави апликация във VB, която да управлява базата от данни)?

Автор:  Реконструктор [ Чет Фев 23, 2012 2:22 am ]
Заглавие:  Re: Въпрос за ACCESS

Да, за интрефейс трябва да ползваш VBA (visual basic for applications).

Автор:  E1 [ Чет Фев 23, 2012 12:36 pm ]
Заглавие:  Re: Въпрос за ACCESS

Благодаря! Така си и помислих, но нямам опит с Access-а.

Автор:  E1 [ Пет Фев 24, 2012 2:20 pm ]
Заглавие:  Re: Въпрос за ACCESS

Честно казано, не мога да схвана как точно трябва да въведа кода в таблиците. Трябва ми, например, следното: Имаме Table1 и Table2. Ако някъде в Table1 Поле2 и Поле3 имат съответни стойности с Поле2 и Поле3 на Table2(за всяка таблица -в рамките на един запис - т.е. на един ред), то в Поле4(на съответния ред) на Table2 да се запише "1".

Автор:  ДедоБоре [ Пет Фев 24, 2012 2:54 pm ]
Заглавие:  Re: Въпрос за ACCESS

що не започнеш с някой туториал, после с по-сериозна книжка и накрая дебела книга за аксеса (ако изобщо има смисъл точно от този "продукт")

Автор:  raven_feather [ Пет Фев 24, 2012 7:09 pm ]
Заглавие:  Re: Въпрос за ACCESS

Трябва ти някоя книжка за Visual Basic for Applications.И интернет има доста , но напоследък взеха да изчезват тези сайтове :)

Автор:  E1 [ Съб Фев 25, 2012 2:58 am ]
Заглавие:  Re: Въпрос за ACCESS

Проблемът е по-скоро с Access-а. Но намерих примери и напредвам.

Автор:  E1 [ Сря Фев 29, 2012 11:35 pm ]
Заглавие:  Re: Въпрос за ACCESS

Почти всичко успях да направя(оказа се доста по-обемно от планираното). Остана само един проблем:
Необходимо е да се търси съдържание "Х" в поле "Y" и след като се открие, целият запис да се прехвърли в отделни TextBox. Например: Ако в полето(колоната) се търси "1", след като се намери, цялото съдържание на записа(реда), да се запише в TextBox1 - TextBox3:
поле1 (1) -> TextBox1
съдържание на поле вдясно->TextBox2
съдържание на последно поле-> TextBox3
поле 1 е първичен ключ. Т.е. няма два записа, които да покриват този критерий.

Автор:  CarBeta [ Чет Мар 01, 2012 1:30 am ]
Заглавие:  Re: Въпрос за ACCESS

Примерно...
Код:
Dim rs As Object
Set rs = CurrentDb.OpenRecordset("Table1")


Код:
Do While Not rs.EOF
If rs!име_на_колона_ID = "нещо" Then
TextBox1.value = rs!име_на_колона_1
TextBox2.value = rs!име_на_колона_2
TextBox3.value = rs!име_на_колона_3
Exit Do
End If
Loop

Set rs = Nothing

Автор:  E1 [ Чет Мар 01, 2012 12:38 pm ]
Заглавие:  Re: Въпрос за ACCESS

Благодаря за отговора. Междувременно тръгна по малко по-сложния начин, който се опитвах два дни да използвам - с DataBindings. Целият проблем се оказа в грешно свързване на полетата от моя страна - не бях обърнал внимание, че при връзката на масива и таблицата съм свързал елемент(0)->поле1 и елемент(1)->поле 0 и оттам се получаваха нелогични аномалии, които не можех да си обясня. Най-лошото беше, че двата елемента са в идентичен формат и порядък и размяната оставаше скрита.
----------------
Един въпрос от VB: Как може да се раздели от един TextBox в два отделни. Например: Ако имаме: TextBox1.Text="Hello", текстът да се пренасочи така: Text.Box2.Text="He" TextBox3.Text="llo"?

Автор:  CarBeta [ Съб Мар 03, 2012 8:53 pm ]
Заглавие:  Re: Въпрос за ACCESS

Взимаш два символа от ляво:
Код:
Text2.Text = Left(Text1.Text, 2)
'Text1.Text = "Hello", Text2.Text = "He"

Взимаш три символа от дясно:
Код:
Text3.Text = Right(Text1.Text, 3)
'Text1.Text = "Hello", Text3.Text = "llo"

Взимаш три символа от средата, като започнеш от втория:
Код:
Text4.Text = Mid(Text1.Text, 2, 3)
'Text1.Text = "Hello", Text4.Text = "ell"

Автор:  E1 [ Нед Мар 04, 2012 12:15 pm ]
Заглавие:  Re: Въпрос за ACCESS

Благодаря!
Във Visual Basic 2010 съществува ли начин за изчистване на приемния буфер на серийния порт?
Имам комуникация през него(от микроконтролер), но прочита 100% коректно само първото съобщение. След това започва да си прави каквото си иска. Доколкото виждам, това е сериозен проблем за доста хора. Дошла ми е на ум една доста тъпа идея - да изпращам безсмислени символи "-", до запълване на буфера, веднага след валидното съобщение, така че следващото валидно да е пак в началото на буфера. Но искам да избягна подобна глупост и ако е възможно, просто да изчистя буфера. Попадам на съвети да се следят приетите байтове, като се направи масив с размера на буфера и с "показалец" се следи определя коя част се чете, но и тази концепция ми се струва доста тромава.
Ето кодът, който ползвам:

Private Sub DataReceived( _
ByVal sender As Object, _
ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _
Handles serialPort.DataReceived
txtDataReceived.Invoke(New _
myDelegate(AddressOf updateTextBox), _
New Object() {})

End Sub
'=============
Public Delegate Sub myDelegate()
'=============
Public Sub updateTextBox()
With txtDataReceived
txtDataReceived.Clear()
.AppendText(serialPort.ReadExisting)

'===== РАЗДЕЛЯНЕ НА ДАННИТЕ В ДВЕ ТЕКСТОВИ КУТИИ =====
Area.Text = txtDataReceived.Text
txtDataReceived.Clear()
End With
End Sub

Автор:  CarBeta [ Нед Мар 04, 2012 1:04 pm ]
Заглавие:  Re: Въпрос за ACCESS

Съществува - Rs232.DiscardInBuffer()
А защо просто не направиш буфера с размер, който те устройва(InBufferSize=???)? По подразбиране, ако не се лъжа, размера на буфера е 512 знака. Задай му 1 или 10 или колкото ти трябват там! Другия вариант е, ако получаваш съобщения с различна дължина, вземи дължината на приетото съобщение(InBufferCount) А и по подразбиране порта е настроен да ти дава ASCII. Възможно да ти изкарва глупости ако процесора ти праща HEX.

След With txtDataReceived не е нужно да пишеш преди точката txtDataReceived. То това е идеята на With
И последното не ти разделя съобщението на две...

Автор:  E1 [ Нед Мар 04, 2012 1:54 pm ]
Заглавие:  Re: Въпрос за ACCESS

С DiscardBuffer() нещата се пооправиха - греши в около 25% от случаите.
Ще опитам със съобщение към процесора, да изпрати данните отново.
Съобщенията са с еднаква дължина - 18 байта. При мен VB2010 не разпознава командата InBufferSize. Има ли някаква особеност при задаването?
Всичко предавам като ASCII. Изпращането е коректно, защото имам монитор на серийния порт и там ги виждам при тест - винаги коректни съобщения. Имам проблем с обработката във VB2010. Странно е, че първото съобщение ВИНАГИ се възприема коректно. А после настава хаос.
За другото, махнал съм редовете, които разделят, за да се вижда само процедурата, която има отношение към трансфера, а съм забравил коментара. Буферът мисля, че е 2000 и нещо(2047) по подразбиране.
===========
С обратната връзка нещата си дойдоха на място. Следя дължината на прочетеното и ако е различно от 18, връщам грешка. Досега не е зацикляло.
===========
CarBeta, благодаря ти! Много ми помогна!
Откъде може да се промени локацията, на която да се инсталира програмата после(не публикуване, а място на инсталация)? В момента набива в Local Settings и не ме радва.

Автор:  CarBeta [ Нед Мар 04, 2012 8:56 pm ]
Заглавие:  Re: Въпрос за ACCESS

Като правиш инсталационен пакет, съветника иска целия проект и самата програма. Проекта му трябва заради библиотеките, които си използвал и след това ги инсталира там където са и на твоя компютър. Програмата по подразбиране се инсталира на мястото, от където си я посочил на съветника(в твоя случай там където ти е проекта). Или промени пътя за инсталация или направи една папка, където искаш да се инсталира, и сложи там програмата. Като правиш пакета за инсталиране избери програмата от папката, в която искаш да се инсталира после, а не от папката, където ти е проекта.

За размера на буфера опитай само с BufferSize
Код:
object.BufferSize = Value

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/