Topic: Помощь по SQL запросам?

Есть SQL запрос. Он работает и выводит в ГРИД необходимые записи. Проблема в том что их нельзя редактировать или это нереализовано в принципе? Может я что-то не так написал? Подскажите пожалуйста, а то уже кучу всего перечитал и не получается.

select
BDog.num_gk,
strftime('%d.%m.%Y',bdog.date_gk),
BDog.shifr,
vedisp.numstage,
vedisp.namestage,
vedisp.ONTD,
strftime('%d.%m.%Y',vedisp.startstage),
strftime('%d.%m.%Y',vedisp.endstage)as dateend,
vedisp.trud,
vedisp.cashstage,
vedisp.NDS,
vedisp.vidcash,
vedisp.Zakl_OC,
vedisp.Zakl_TFC,
vedisp.udost,
(case when vedisp.otmstage= 1 then 'Да' else 'Нет' end),
vedisp.id_bdog


from vedisp, bdog

where vedisp.id_bdog=bdog.id and strftime('%m.%Y',vedisp.endstage)= strftime('%m.%Y',{DateTimePicker2})and vedisp.otmstage='0'
order by dateend

Re: Помощь по SQL запросам?

Можно, необходимо в SQL запрос добавить поле id, в вашем случае это скорей всего BDog.id


Более подробно можно прочитать здесь, в самом низу страницы.
http://myvisualdatabase.com/help_ru/com … n_sql.html

Dmitry.

Re: Помощь по SQL запросам?

сделал. все равно не работает. не позволяет редактировать запись.

Re: Помощь по SQL запросам?

delphinsl
Отправил вам исправленный проект на e-mail )

Dmitry.

Re: Помощь по SQL запросам?

СПАСИБО ОГРОМНОЕ! ОКАЗЫВАЕТСЯ ВСЕ БЫЛО ПРОЩЕ ПРОСТОГО. ЧРЕЗМЕРНО БЛАГОДАРЕН.

6 (edited by motorolla 2014-11-25 10:43:27)

Re: Помощь по SQL запросам?

Здравствуйте, подскажите а как с помощью скрипта при sql запросе выводить не в грид , а сразу в текстбокс ту информацию, которая нужна?

Re: Помощь по SQL запросам?

motorolla
например так

Form1.Edit1.Text := SQLExecute('SELECT firstname FROM tablename WHERE id=1');
Dmitry.

8 (edited by motorolla 2014-11-25 13:10:07)

Re: Помощь по SQL запросам?

работает, спасибо!

только единственное не понял, а что делаю не так -  почему когда написано вот так, то работает

Enter.Edit4.Text := SQLExecute('SELECT jiteli.familia FROM jiteli WHERE jiteli.lot=10'

а когда пытаюсь так, то пишет ошибка нет такого столбца (меняю число 10 на число в соседнем текстовом поле, хочу сравнить с ранее введенным числом)

Enter.Edit4.Text := SQLExecute('SELECT jiteli.familia FROM jiteli WHERE jiteli.lot=Enter.Edit12.Text'

Re: Помощь по SQL запросам?

motorolla
попробуйте так:

Enter.Edit4.Text := SQLExecute('SELECT jiteli.familia FROM jiteli WHERE jiteli.lot= "' + Enter.Edit12.Text + '"');
Dmitry.

Re: Помощь по SQL запросам?

ааа, Семен Семеныч,))),  благодарю в который раз))))

Re: Помощь по SQL запросам?

подскажите пожалуйста, делаю вывод записей в гриде с определенной даты по определенную дату. Никак не могу сделать правильный sql запрос. А где ошибка?  Должны быть видны записи у которых выполняется условие t1<t<t2. Но что то не так выводит.

SELECT
datavvoda,
textzayavki

FROM
zayavki

where strftime('%d.%m.%Y',{DateTimePicker1}) < strftime('%d.%m.%Y',zayavki.datavvoda) and strftime('%d.%m.%Y',zayavki.datavvoda) < strftime('%d.%m.%Y',{DateTimePicker2})

Re: Помощь по SQL запросам?

motorolla
strftime - преобразует дату, в необходимый текстовый вид, т.е. вы пытаетесь сравнивать текст.


попробуйте так

SELECT
datavvoda,
textzayavki

FROM
zayavki

WHERE
Date({DateTimePicker1}) < Date(zayavki.datavvoda) AND
Date(zayavki.datavvoda) < Date({DateTimePicker2})
Dmitry.

Re: Помощь по SQL запросам?

ага, спасибо большое, понял.

Re: Помощь по SQL запросам?

Хотя перечитал сейчас документацию по sqlite, в принципе с strftime тоже должно работать.

Dmitry.

Re: Помощь по SQL запросам?

спасибо, работает. А вот еще вопрос - как вставить CheckBox в SQL-запрос для отображения в гриде?

Re: Помощь по SQL запросам?

попробуйте так:

SELECT
datavvoda,
textzayavki,
(case when {CheckBox1}=1 then "Да" else "Нет" end)

FROM
zayavki

WHERE
Date({DateTimePicker1}) < Date(zayavki.datavvoda) AND
Date(zayavki.datavvoda) < Date({DateTimePicker2})
Dmitry.

17 (edited by motorolla 2014-12-19 21:35:16)

Re: Помощь по SQL запросам?

благодарю Дмитрий!
Подскажите, пожалуйста, бьюсь еще вот над каким вопросом:
ComboBox заполнен статусами заявок. Есть связь с этим комбобокс в другой таблице, где id_..=1 соответствует первой записи в комбо, id_...=2  - второй и т.д.. Но сам комбобокс начинается с пустого поля всегда. Чему равен id этой записи.
Мне это нужно чтобы сделать SQL-запрос записей, в которых комбобокс не выбран, т.е. пустой. Пробовал по разному - не получилось, что то типа того:

SELECT
datavvoda,
textzayavki,


FROM
zayavki

WHERE
id_statuszayavki=' '

Re: Помощь по SQL запросам?

motorolla
Если в ComboBox пустое значение, то это -1


вам необходим запрос, чтобы при не выбранном статусе в ComboBox, были выведены все записи, вне зависимости от статуса?

Dmitry.

19 (edited by motorolla 2014-12-19 21:49:56)

Re: Помощь по SQL запросам?

DriveSoft wrote:

motorolla

вам необходим запрос, чтобы при не выбранном статусе в ComboBox, были выведены все записи, вне зависимости от статуса?

да, а точнее все, кроме какой-то одной

Re: Помощь по SQL запросам?

тогда так:

SELECT
datavvoda,
textzayavki


FROM
zayavki

WHERE
(CASE WHEN {ComboBox1}=-1 then 1=1 else id_statuszayavki={ComboBox1} end) AND
id_statuszayavki<>2
Dmitry.

Re: Помощь по SQL запросам?

извините, неправильно сформулировал, получается немного не то что хотел.
Попробую объяснить так - в гриде отображаются все записи, включая те, у которых id_statuszayavki пустой.  Так вот, можно ли или в фильтре или в SQL запросе сделать так, чтобы например в гриде отображались только записи с id__statuszayavki = пустой, 1 и 2. Кроме 3. Перебрал уже все варианты - либо все показывает, либо пустые id пропадают. Ну или хотя бы - можно посмотреть пример, как отобразить только те записи у которых id_statuszayavki пустой.

Re: Помощь по SQL запросам?

в SQL запросе сделать так, чтобы например в гриде отображались только записи с id__statuszayavki = пустой, 1 и 2. Кроме 3.

SELECT
datavvoda,
textzayavki


FROM
zayavki

WHERE
id_statuszayavki<>3

Ну или хотя бы - можно посмотреть пример, как отобразить только те записи у которых id_statuszayavki пустой.

SELECT
datavvoda,
textzayavki


FROM
zayavki

WHERE
id_statuszayavki IS NULL
Dmitry.

23 (edited by motorolla 2014-12-20 16:49:05)

Re: Помощь по SQL запросам?

то что надо! благодарю Дмитрий! теперь понятно что я делал не так. все получилось.

24 (edited by motorolla 2014-12-21 10:40:20)

Re: Помощь по SQL запросам?

а можно ли в SQL-запросе сделать так, чтобы в первом столбце отображались записи по порядку на увеличение, так как в гриде - # (Auto Increment)
что то типа

SELECT
#,
id,
....
FROM
.....

Re: Помощь по SQL запросам?

Для добавления сквозной нумерации в компонент таблицы, в который будет выведен результат запроса, можете воспользоваться ключевым словом "$autoinc".
Например:

SELECT "$autoinc", somefield FROM table;
Dmitry.