Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.04.08;
Скачать: [xml.tar.bz2];

Вниз

програмное заполнение Tibtable.locate   Найти похожие ветки 

 
rilmeer ©   (2011-12-19 18:55) [0]

Нужно передать значения через переменные в
ibTable1.Locate(ТУТ, VarArrayOf([ТУТ]),   [loCaseInsensitive, loPartialKey])
я вставил туда 2 стринговые переменные. компилятор пропускает, но поиск не работает. вылазиют динамические ошибки.
в чём моя ошибка?

* строки имеют нужный вид типо "edit1.text,edit2.text"
** ошибки различаются в зависимости от вариаций задействованых Edit"ов (они должны браться в расчёт при активной галочке рядом)
*** я практически не знаю SQL такчто сразу в тот лес плиз не посылайте (типо юзай SQLQuery и тд)


 
И. Павел ©   (2011-12-19 19:56) [1]


> вылазиют динамические ошибки.

Приведите текст ошибок.

ibTable1.Locate(ТУТ, VarArrayOf([ТУТ]),
В этом параметре нужно указать список полей для поиска, разделенных точкой с запятой а в VarArrayOf - соответствующее число параметров.

Если вы ищете по одному полю, то VarArray создавать не нужно. Два первых аргумента - это название поля и искомое значение.


 
Ega23 ©   (2011-12-19 19:57) [2]


> * строки имеют нужный вид типо "edit1.text,edit2.text"


Приведи полный код вызова Locate


 
rilmeer ©   (2011-12-19 20:09) [3]

if checkbox1.Checked=true then begin koi1:=koi1+"IMA;"; koi2:=koi2+"edit1.text,"; end;
if checkbox2.Checked=true then begin koi1:=koi1+"FAMINILA;"; koi2:=koi2+"edit2.text,"; end;
if checkbox3.Checked=true then begin koi1:=koi1+"OTCHESTVO;"; koi2:=koi2+"edit3.text,"; end;
if checkbox4.Checked=true then begin koi1:=koi1+"OTDEL;"; koi2:=koi2+"edit4.text,"; end;
if checkbox5.Checked=true then begin koi1:=koi1+"DOLSHNOST;"; koi2:=koi2+"edit5.text,"; end;
if checkbox6.Checked=true then begin koi1:=koi1+"DATA"; koi2:=koi2+"DBDateTimeEditEh2.Value"; end;
label4.Caption:=koi1; label5.Caption:=koi2;
if not
ibTable1.Locate(koi1,
VarArrayOf([koi2]),
  [loCaseInsensitive, loPartialKey])
then
ShowMessage("Не найдено, либо ошибка ввода.");

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

если активны все чекбоксы, то вылазиет вотэто " Project Project1.exe raised exception class EVariantBadIndexError with message "Variant of safe array index out of bounds" ".


 
И. Павел ©   (2011-12-19 20:18) [4]


> rilmeer ©   (19.12.11 20:09) [3]

Если вы ищете по одному полю, не используйте VarArrayOf. Т.е. замените
VarArrayOf([koi2])
на
koi2


 
И. Павел ©   (2011-12-19 20:20) [5]


> rilmeer ©   (19.12.11 20:09) [3]

[4] - я ошибся.
Вы koi2 не правильно набираете. У вас должно быть [koi21, koi22, koi23] и т.д. А вы передаете единственный элемент в Vararray.


 
И. Павел ©   (2011-12-19 20:23) [6]

Как вариант: создайте динамический массив "Values:  array af Variant". В зависимости от checkbox-ов, набирайте в него значения. А в VarArrayOf передавайте именно этот массив. Вот ссылки в помощь:
http://docwiki.embarcadero.com/RADStudio/XE2/en/Using_Locate
http://valera.asf.ru/delphi/help/name.php?name=VarArrayOf


 
rilmeer ©   (2011-12-19 20:23) [7]

в том и соль что значение полей не фиксировано, пользователь сам галочками выбирает количество полей


 
rilmeer ©   (2011-12-19 20:24) [8]

опаздал с сообщением) .попробую как написали


 
rilmeer ©   (2011-12-19 20:50) [9]

VarArrayOf(const Values:  array af Variant):  Variant;
вот так компилится не хочет.

V := VarArrayCreate([0,1], varVariant);
if checkbox1.Checked=true then begin koi1:=koi1+"IMA;"; v[0]:=edit1.text; end;
if checkbox2.Checked=true then begin koi1:=koi1+"FAMINILA"; v[1]:=edit2.text; end;
а вот так после компиляции вылазиет опять  "Variant of safe array index out of bounds"


 
Плохиш ©   (2011-12-19 20:51) [10]


> И. Павел ©   (19.12.11 20:23) [6]
> Как вариант: создайте динамический массив "Values:  array
> af Variant". В зависимости от checkbox-ов, набирайте в него
> значения. А в VarArrayOf передавайте именно этот массив.
>  Вот ссылки в помощь:
>

Это не вариант, единственное верное решение поставленной задачи.
Ты посмотри, что он в свою koi2 пихает.

> rilmeer ©   (19.12.11 20:09) [3]
>

В качестве второго параметра должен передаваться массив значений, а не список твоих переменных. Справку бы чтоли почитал, для начала, хотя чëй-то я, всем же известно, что справки для лохов писаны.


 
Плохиш ©   (2011-12-19 20:55) [11]


> rilmeer ©   (19.12.11 20:50) [9]

Переменную типа array of Variant описать, слабо?


 
rilmeer ©   (2011-12-19 21:10) [12]

Павел, спасибо, правильно подсказал- заработало.
Плохиш выпились с темы.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.04.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.041 c
11-1242117482
QAZ
2009-05-12 12:38
2012.04.08
TreeView из списка Файлов


2-1323931915
И. Павел
2011-12-15 10:51
2012.04.08
Incorrect Syntax на одной машине, а на другой — все работает...


1-1291060700
flexo911
2010-11-29 22:58
2012.04.08
Предложения


15-1323418760
_Андрей_
2011-12-09 12:19
2012.04.08
Наложение прозрачного изображения на сканируемые документы


15-1323241735
Dennis I. Komarov
2011-12-07 11:08
2012.04.08
Routing OS





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский