Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 21:51 21.06.24 
Компютри и Интернет
   >> Delphi
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема Свързване на Delphi с IB7нови  
Авторфaнтa (Нерегистриран)
Публикувано13.04.05 17:31



Ок, направих си тейбълс и views в Interbase и сега какво? Информацията в таблиците кога трябва да я вкарвам: след като свържа базата данни със Делфи или преди това?

Формите за лейоута в Делфи ги направих, но как да ги сържа с дейтабейса? Кога да правя queries?

Знам че въпросте ми са много общи и може би глупави, но за първи път правя нещо на Делфи и съм объркана . Правила съм databases na Access и сега исках да опитам нещо "по-сложно", а книгите за Делфи само ме объркват повече .

Ако някой има време да ми покаже светлина в тунела, ще сън много благодарна...



Тема Това е дълга теманови [re: фaнтa]  
Автор andrew_nikoloff (bugbuster)
Публикувано13.04.05 18:03



Първо да попитам - имаш ли представа от програмирането като цяло? В частност с Delphi? Много ще ти е от полза.
За да се вържеш към база на IB трябва да използваш компоненти за достъп. В D7 можеш да ползваш IBX, dbExpress, ADO и т.н. Ще се спра на IBX.
Първо трябва да имаш два компонента - IBDatabase и IBTransaction. Сложи си ги на главната форма на приложението. Установи DefaultDatabase на IBTransaction1 да е IBDatabase1. Щракни двойно на IBTransaction1 и избери да е Read Commited. В IBDatabase1 установи DefaultTransaction да е IBTransaction1, щракни двойно и задай път към файла на базата, потребителско име, евентуално charset, изключи Login prompt-a.
Сега следва компонент за достъп до данните. Най-просто (препоръчвам ти го само за проба. В реални приложения не го ползвай) е IBTable. Сложи един такъв и му установи Database да е IBDatabase1. Сега можеш да си избереш TableName да е някоя от таблиците ти в базата. От тук за да си визуализираш данните ти трябва Data Source (установи пропъртито му DataSet да е IBTable1) и DBGrid (или някой от другите компоненти в Data Aware страницата). На DBGrid1 направи DataSource да е DataSource1. Направи Active на IBTable1 да е True и ако всичко е наред трябва да видиш данните от таблицата ти в грида. Сега можеш да си стартираш програмата (F9) и да въвеждаш/редактираш данни.
Това разбира се е много общо описани. Липсват много неща, без които не би могло едно приложение да бъде качествено, но темата е наистина много обширна. Ако имаш по-конкретни въпроси - пиши! Ще се постараем да ти помогнем.



Тема Re: Това е дълга теманови [re: andrew_nikoloff]  
Авторфaнтa (Нерегистриран)
Публикувано14.04.05 20:28



andrew_nikoloff, мерси много за помоща! Успях да направя каквото си ми написал, но възникнаха още много въпроси. Значи до колкото разбрах, всеки път като правя нов формс, трябва да правя тези стъпки: да си създавам database и transaction?! И на всеки нов компонент трябва да имам data source и т.н... Само ме притеснява, че колонките в грида са с имената на таблицата както съм я създала и не можах да ги променя.

Иначе от програмиране като цяло незнам какво имаш впредвид. Паскал не съм го докосвала до сега, но си имам на идея какво е if, else и т.н, както и от SQL. Но ще се науча защото ми стана интересно:) и ще ви питам пак като запъна някъде защото няма кой...

Отново много благодаря!



Тема Re: Това е дълга теманови [re: фaнтa]  
Автор andrew_nikoloff (bugbuster)
Публикувано14.04.05 21:43



Радвам се, че съм успял да ти помогна
Малко по малко нещата ще ти се изяснят.
А сега на въпросите, които си поставила:
1. Не, не е нужно да си слагаш нови IBDatabase и IBTransaction за всяка форма. Практически един IBDatabase компонент ще ти е достатъчен и в 99% от случаите един IBTransaction също. IBDatabase ти осъщестрява връзката с базата данни. Той може да бъде общ за всичките ти DataSet-и (това са компонентите, които извличат данните от базата, било то таблици или SQL заявки) и транзакции (IBTransaction). Удобно е да си поставиш една двойка IBDatabase + IBTransaction в Data Module или форма, която да се ползва от останалите ти форми и да ползваш тях.
2. DataSource е един вид интерфейс между DataSet-ите и контролите за визуализирана на данните (Data Aware). Иначе той не е необходим за връзката ти към базата. Слагай такъв само да DataSet-ите, които искаш да се визуализират. Разгледай страницата с компоненти Data Aware. Там освен DBGrid (който показва данните от повече от един запис и от няколко/всички колони) има компоненти за визуализиране и редакция на конкретна колона от текущия запис - DBEdit, DBMemo, DBImage и т.н.
3. За заглавията на колонките. Откри ли вече Fields editor-а? Ако не - щракни двойно на DataSet-а ти (в предния пример, който дадох това е IBTable1). Ще ти се отвори едно редакторче. Десен бутон - Add All Fields. Това ще ти добави колонките от базата. Сега за всяка от тях в Object Inspector-а можеш да си напишеш Display Label. Също така ще са ти от полза на първо време Display Width и Display Format.
4. Казваш, че си наясно с SQL, значи би трябвало да знаеш какво представляват транзакциите. Всеки IBTransaction компонент представлява транзакцията, в която работиш с данните. Той има методи InTransaction, Commit, CommitRetaining, Rollback, RollbackRetaining и StartTransaction - ще ти трябват.
5. Миналия път казах, че не ти препоръчвам да ползваш IBTable. Виж IBDataSet, IBQuery и IBSQL. Първият е един вид аналог на Table компонентите. За да работиш с него трябва да си попълниш SelectSQL, RefreshSQL, InsertSQL, ModifySQL и DeleteSQL пропъртитата. IBQuery е подобен, но не може да редактира данните. IBSQL е оптимизиран компонент за изпълнение на заявки, но няма възможност за визуализиране на данните в Data Aware контроли. И последно да кажа - заявки, които връщат резултат (select) се изпълняват с Open метода на IBQuery, а останалите (insert into, update, delete from, execute procedure и т.н.) с ExecSQL.
Успех в борбата с Делфито



Тема Re: Това е дълга теманови [re: andrew_nikoloff]  
Авторфaнтa (Нерегистриран)
Публикувано16.04.05 12:18



Hi,
Мерси много пак за отговора. Проясняват ми се много неща.
Значи, исках да си направя форм за Продажба, като в горната част имам Edit полета за въвеждане на датата, клиента и т.н.. от долу Grid със закупените изделия. Направих си едно DataSet и DataSource за горната част и втори DataSet и DataSource за грида, който импортнах от View. И уж всичко изглеждаше наред, но когато го стартирах, ми даде следната грешка:
Project Project2.exe encountered unhandled exception class Borland.Vcl.Class.EclassNotFound.Process stop.Use stop or Run to continue.
И ми дава един Debug прозорец с ендлес код, в който не виждам смисъл.. :(

В горната част (с Edit полетата) много се чудих дали да свържа и TDBText към DataSource също, както направих с TDBEdit. Но когато го направих ми каза: 'customer' is not a valid component name. Дали там не е грешката? В Пропертито на TDBText почти нищо не съм променяла.

Както и да е. Сложих си и Нав бар без собствени DataSet и DataSource, но го насочих към първия DataSet за да сменя номерата на продажбите. Но се питам дали заедно с тях ще се сменят и полетата в грида? Не мога да видя защото когато натисна F9, винаги получавам горната грешка...:((

Уф, имам и още много други въпроси, но ме е страх да не дотегна..




Тема Re: Това е дълга теманови [re: фaнтa]  
Автор Mixy (миксер)
Публикувано16.04.05 13:24



> Уф, имам и още много други въпроси, но ме е страх да не дотегна..

При теб май се получава, все едно се опитваш да се научиш да караш мотор. Но се качваш на пистов съзтезателен модел, преди още да можеш да караш дори колело! Прав ли съм?



Mixy


Тема Re: Това е дълга теманови [re: Mixy]  
Авторфaнтa (Нерегистриран)
Публикувано16.04.05 13:52



Защо мислиш така?

Не мисля че Delphi е чак "пистов състезателен модел". Мотор може и да не съм се научила да карам още, но колело карам и не смятам да оставам на това ниво. Проблема ми е че съм сама на пистата и нямам треньор...

И до тук с метафорите...



Тема Re: Това е дълга теманови [re: фaнтa]  
Автор andrew_nikoloff (bugbuster)
Публикувано17.04.05 16:59



Не знам защо, ама направо се загубих в обяснението ти :)
Вземи цялата тази форма и я изтрий от проекта. Увери се, че е изтрита и от диска. Между другото Делфи 2005 ли ползваш? Това изключение ме навежда на едни такива мисли...
Направи си нова форма. Сложи в нея DBEdit за дата, клиент и т.н. Сложи си един DataSource и вържи DBEdit-ите за него, а неговия DataSet - към таблизата ти с продажбите (която е в DataModule-а при IBDatabase/IBTransaction компонентите надявам се...). Стартирай си приложението и виж дали работи.
Сега сложи DataSet за закупените изделия. Може и в новата форма да е. Направи го да се отваря с подходящите данни при добавяне/редакция на продажба. Пробвай си програмата.
Добави си DataSource към новия DataSet. Сложи и DBGrid към него. Работи ли още?

Не искам да те обидя, но донякъде съм съгласен с Микси. Карай по-бавничко. Изясни си най-напред кое какво е, как се използва. Свикни с него и с начина на работа. Опитай за начало да го направиш това нещо да работи на два паса - добавяне на нова продажба и добавяне на стока към съществуваща продажба. В две отделни екранчета.
Има някои неща, които трябва да си изясниш как стават. Управляваш ли си транзакциите? Как си реализиррала master-detail връзката между продажбите и изделията? Имаш ли външни ключове в базата? Ако да - обработваш ли ситуацията при създаване на нова продажба (добавяне на изделия към продажба, която още не е записана в базата)?

Делфи е много мощен инструмент. Не пистов мотор, а направо изтребител Хариер :) НЕ можеш да го сравняваш с Аксес. Успех с ученето.



Тема Re: Това е дълга тема [re: andrew_nikoloff]  
Авторфaнтa (Нерегистриран)
Публикувано21.04.05 21:24



andrew_nikoloff, мерси отново за отговора.

Окей, ще го давам по-бавно и по-славно :) Бях го зарязала за няколко дни, но пак ще почвам да го мъча...Изтрих си старата форма и направих нова горе долу по същия начин като предната и работи. Дори нав бара работи, само дето отново ги сложих на една форма и пак не работят заедно, но ще го разбера как става!

Иначе ползвам Delphi 8 .NET
Имаш ли ICQ?



Тема Re: Това е дълга теманови [re: фaнтa]  
Автор andrew_nikoloff (bugbuster)
Публикувано22.04.05 09:12



27618751, но няма да имам много време за обширни консултации. Само конкретни въпроси моля :)




Страници по тази тема: 1 | 2 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.