|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
добавления записи в таблицу dbf
Помогите написать запрос для добавления записи в таблицу dbf.
Есть таблицы bdf, нужно вносить в них изменения. Таблицы я научился подключать через ADO и BDE, а вот добавить запись я так и не могу. Я понимаю что надо SQL запросы писать, но не знаю как пишется запрос и куда его надо вводить. Пожалуйста не пишите что надо мне почитать книги, это мне не поможет, у меня появится больше вопросов чем ответов, я уже пробовал там все расплывчато написано а мне надо конкретно по моему примеру! Покажите мне конкретный рабочий пример, буду очень признателен! |
#2
|
|||
|
|||
Цитата:
Код:
INSERT INTO TableName (FieldName1,FieldName2) Values(ValueField1,ValueField2) На изменение: Код:
Update TableName Set FieldName1=ValueField1, FieldName2=ValueField2 Where FieldName3= ValueWhere где: TableName= Название таблицы FieldName1,FieldName2,FieldName3= Поля таблицы TableName ValueField1,ValueField2= Значения вставляемые удаляемые. ValueWhere= Значение условия выборки ПС. В книгах по SQL Все нормально расписано, впринципе мне хватало в свое время и стандартной документации. Главное желание. Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#3
|
|||
|
|||
Ок, спасибо что ответил!
Что то подобное я уже встречал, но все встает на том что я не знаю куда этот SQL запрос вставить. Напиши пожалуйста куда запрос вводиться, для меня многое станет понятно! |
#4
|
|||
|
|||
Цитата:
INSERT INTO TableName (FieldName1,FieldName2) Values(:ValueField1,:ValueField2) :valuefields1 Будет являться параметром, т.е. ты во время выполнения программы присвоишь определенный текст допустим из эдита, этому параметры и после того как выполнишь запрос данные добавятся в таблицу. |
#5
|
|||
|
|||
Спасибо вам, есть же люди на форуме!
Кое что для меня проясняется, я не хотел бы здесь тупить и задавать глупых вопросов, я сейчас даже качаю книгу по SQL но пока качается книга и пока пройдет время, до того как я найду что то похожее по моей теме. Я хотел бы задать еще пару вопросов, я думаю что на вас могу положится, т.к. пока получаю для себя ценнейшие ответы. Вот возьмем dbf файл например industry, он я думаю есть у всех в папке C:\Program Files\Common Files\Borland Shared\Data там есть название стоблцов ind_code,int_name,long_name, то есть делаем так - INSERT INTO industry (ind_code,int_name,long_name) Values(ValueField1,ValueField2) получается я изменил в запросе название таблицы и название ячеек, получается этого должно хватить чтобы добавить свои данные в таблицу?! Но что делать дальше при компиляции этого "проекта"? У меня просто запускается таблица и это логично я думаю! Я так понимаю что этот запрос надо связать с кнопкой или как вообще выполнить запрос? Я понимаю что задаю очень глупый вопрос для вас, но все таки не посылайте меня )) и ответьте на него. Практически не сплю, жду ответа от вас )). Будет классно если вы найдете этот файл у себя, можно конечно и на другом dbf файле показать пример, вы потратите несколько минут а мне серьезно поможете! |
#6
|
||||
|
||||
Плохо, что у вас изначально нет литературы, но по идее и справки встроенной Дельфи должно хататать.
Первое: В SQL существуют 2 основных вида запросов: 1. исполняемый - запрос который что-то делает с БД и не возвращает данные это запросы типа (insert, delete, update) 2. запрос на получение данных - (select) Второе: В Дельфи работа с SQL через ADO реализована следующим образом: 1. Организуется подключение к БД (для фомата DBF базой данных считается каталог в котором расположены таблицы) с помощью компонента AdoConnection. 2. С помощью компонентов ADOQuery или ADOCommand выполняются запросы пользователя. 3. С помощью компонента DataSource результаты выполнения запросов можно передать для отображения в компонет DBGrid или любой другой компонент использующий БД. Вот пример для вашей таблицы: Обратите внимание как выглядит строка подключения т.к. для подключение к DBF есть небольшая хитрость. dfm-файл Код:
object Form1: TForm1 Left = 307 Top = 114 Width = 435 Height = 300 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object DBGrid1: TDBGrid Left = 8 Top = 48 Width = 320 Height = 185 DataSource = DataSource1 TabOrder = 0 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'MS Sans Serif' TitleFont.Style = [] end object ADOConnection1: TADOConnection Connected = True ConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Co' + 'mmon Files\Borland Shared\Data\;Extended Properties=DBASE IV;Per' + 'sist Security Info=False' LoginPrompt = False Mode = cmShareDenyNone Provider = 'Microsoft.Jet.OLEDB.4.0' Left = 24 Top = 16 end object ADOQuery1: TADOQuery Active = True Connection = ADOConnection1 CursorType = ctStatic Parameters = <> SQL.Strings = ( 'select * from industry.dbf') Left = 64 Top = 16 end object DataSource1: TDataSource DataSet = ADOQuery1 Left = 104 Top = 16 end end Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, Grids, DBGrids, ADODB; type TForm1 = class(TForm) ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; DBGrid1: TDBGrid; DataSource1: TDataSource; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} end. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 24.07.2010 в 13:20. |
#7
|
|||
|
|||
Мои вопросы проигнорированы, я получил дополнительную конечно НУЖНУЮ информацию но НЕ ответы не мои вопросы. Просьба чтобы я вас уже не мучил отправьте мне на email: b.grigorev@mail.ru проект, где используется bdf файл с «функцией» добавления своих данных и не более того. Способ подключения, через ADO, драйвер лично у меня используется foxpro, но можно и другой на ваше усмотрение.
Конечно было еще хорошо, если бы вы мне ответили все таки на мои вопросы, что бы устранить некоторые пробелы. Заранее Спасибо! Извините за занудство! |
#8
|
|||
|
|||
Цитата:
1) Создаешь проект делфи 2) Кидаешь на форму компоненты ADOConnection1, ADOTable1, DataSource1, AdoQuery1, DBGRID1, Button1, и 3 эдита для ввода данных. 3)Связываешься с БД, в компоненте ADoTable1 указываешь название таблицы. 4) В Датасурсе указываешь таблицу 5) На форме после того как разместил DBGrid указываешь DataSource таблицы, она отобразится в гриде. 6)Выделяешь компонент ADOQuery, находишь свойство SQL, нажимаешь и вводить туда это запрос-(для таблицы Industry пример) : INSERT INTO industry (ind_code,int_name,long_name) Values(:ind_code,:int_name,:Long_name) 7)Нажимаешь ок, потом в этом же компоненте заходишь в Parameters там появятся параметры int_code,int_name,:long_name. 8)Далее щелкаешь двойным щелчком на компонент кнопки, и туда пишешь код: Код:
adoquery1.parameters[0].asInteger:=strtoint(edit1.text); adoquery1.parameters[1].asString:=edit1.text; adoquery1.parameters[2].asString:=edit1.text; adoquery1.execute; Table1.refresh; Запускаешь вводишь в эдиты данные и жмешь на кнопку. |
#9
|
|||
|
|||
Спасибо windaws, на 7 пункте все встало колом не могу разобраться.
после того как я щелкнул на кнопу Parametrs, там появились int_code,int_name,:long_name, ну да там они есть, ну а дальше то что??? Потом я нажал на конку два раза, ввел код, потом запустил проект и у меня сразу вылезли ошибки [Error] Unit1.pas(36): Undeclared identifier: 'asInteger' [Error] Unit1.pas(37): Undeclared identifier: 'asSring' [Error] Unit1.pas(38): Undeclared identifier: 'asString' [Error] Unit1.pas(39): Undeclared identifier: 'execute' [Error] Unit1.pas(40): Undeclared identifier: 'Table1' [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' Слушай вышли мне проект b.grigorev@mail.ru, так будет проще мне разобраться, а если что я напишу. |
#10
|
|||
|
|||
ошибся...
Код:
adoquery1.Parameters.ParamByName('ind_code').Value:=edit1.text; adoquery1.Parameters.ParamByName('int_name').Value:=edit2.text; adoquery1.Parameters.ParamByName('Long_name').Value:=edit3.text; adoquery1.ExecSQL; adoquery1.refresh; (или сделай неактивной потом снова активной active:=true, active:=false; ) |
#11
|
|||
|
|||
С эти кодом пошло вроде бы.
Запускаю все нормально, ошибок нет, НО когда я меняю в компоненте ADOQuery active:=false на active:=true, показывается ошибка: Неправильно определен объект Parameter. Предоставлены несовместимые или неполные сведения. |
#12
|
|||
|
|||
Цитата:
Код:
adoquery1.refresh Код:
adoquery1.active:=false; adoquery1.active:=true; |
#13
|
|||
|
|||
ок, поменял, при компиляции выдает ошибку, глянь пожалуйста.
|
#14
|
|||
|
|||
Цитата:
В коде исправь: Код:
adoquery1.Parameters.ParamByName('IND_name').Value:=edit2.text; в запросе: Код:
INSERT INTO industry (ind_code,IND_name,long_name) Values(:ind_code,:IND_name,:Long_name) |
#15
|
|||
|
|||
Спасибо что не оставляешь меня с моими начинаниями. Прошлую ошибку в принципе я мог распознать, признаю что сначала надо самому попробовать разобраться. НО новая ошибка, я не могу разобрать, что то вроде связано с функцией ввода.
|