powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / выборка из поля text1
25 сообщений из 53, страница 1 из 3
выборка из поля text1
    #38071186
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите пожалуйста с кодом. Суть в том, чтоб в форме, в поле text1 пользователь писал код товара(поле типа integer) и в таблице

программа искала этот товар и копировал записи в другую таблице (poisktovara). буквы ищет(charater), а цифры(integer) выдает ошибку.вот код

кнопки.Помогите пожалуйства.уже месяц мучаюсь

DELETE FROM poisktovara
insert into poisktovara (kodtovara,naimtovara,texxarakter,opisanie,partiya,kolvo,stoimzak,stoimpokup,nalichie) Select

товары.kodtovara,товары.naimtovara,товары.texxarakter,товары.opisanie,поставки.partiya,поставки.kolvo,поставки.stoimzak,поставки.stoimpokup,поста

вки.nalichie FROM товары,поставки WHERE товары.kodtovara = поставки.kodtovara and SUBSTR(ALLTRIM(товары.naimtovara),2,3) like SUBSTR(ALLTRIM

(thisform.text2.value),2,3) AND [поставки.kodtovara]=(thisform.text1.Value)
DO FORM поисктовара



обычно выдает ошибку operator operand type mismatch. типы поля всех 3 таблиц идиентичны
...
Рейтинг: 0 / 0
выборка из поля text1
    #38071260
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте перед вашим кодом строки
Код: sql
1.
2.
wait window vartype(thisform.text1.Value)
wait window vartype(поставки.kodtovara)

и сообщите результат
...
Рейтинг: 0 / 0
выборка из поля text1
    #38071587
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dag,
ничего не происхит.после 3 нажатия выпадает окно alias 'поставки' is not found
...
Рейтинг: 0 / 0
выборка из поля text1
    #38071590
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне кажется, что не работает копирование в другую таблицу
...
Рейтинг: 0 / 0
выборка из поля text1
    #38071684
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так (вместо всего вышеприведенного вами кода)?
Код: sql
1.
2.
3.
4.
5.
6.
7.
lnKodtovara=val(thisform.text1.Value)
lcNailtovara=SUBSTR(ALLTRIM(thisform.text2.value),2,3)
Select t.kodtovara,t.naimtovara,t.texxarakter,t.opisanie,p.partiya,p.kolvo,p.stoimzak,p.stoimpokup,p.nalichie ;
 FROM товары t INNER JOIN поставки p ON t.kodtovara = p.kodtovara ;
 WHERE p.kodtovara=lnKodtovara AND SUBSTR(ALLTRIM(товары.naimtovara),2,3) == lcNaimtovara ;
 INTO TABLE poisktovara
DO FORM поисктовара
...
Рейтинг: 0 / 0
выборка из поля text1
    #38071712
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longfastПомогите пожалуйста с кодом. Суть в том, чтоб в форме, в поле text1 пользователь писал код товара(поле типа integer) и в таблице
программа искала этот товар и копировал записи в другую таблице (poisktovara). буквы ищет(charater), а цифры(integer) выдает ошибку.вот код
кнопки.Помогите пожалуйства.уже месяц мучаюсь

Ещё два года будешь мучаться, пока не поймёшь, что "в поле text1" ты забиваешь символы (это текстовое поле). И цифирьки забиваемые туда воспринимаются программой, как строковые символы, а не числа. Отсюда и "operator operand type mismatch" (несоответствие типов операндов). Тут, конечно, непонятно было, чего вы там в этот несчастный text1 пытались вводить, но, если к примеру что-то типа "123456", то это СТРОКА, но ещё не число. Чтобы "123456" стало числом, надо использовать функцию VAL("123456") которая вернёт уже чисто число 123456.
P.S. И кончайте с русскоязычными именами таблиц/переменных, к добру не приводит.
...
Рейтинг: 0 / 0
выборка из поля text1
    #38071762
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,Код к сожалению не работает. я доработал свой код и всё заработало.но к сожалению не так как надо. Корректно ищет лишь только по названию товара. а по коду товара находит аж 40 записей(хотя у меня их всего 16).Это из за or. если ставлю and то ищет норм но только когда выбирает одновременно из 2 полей (text1 и text2). Вот как теперь сделать так чтоб выбирало только из одного поля(т.е из поля text1 или text2 или одновременно из обоих)?

SET DELETED ON
DELETE FROM poisktovara
insert into poisktovara(pole1,pole2,texxarakter,opisanie,partiya,stoimzak,stoimpokup,kolvo,nalichie) Select товары.kodtovara,товары.naimtovara,товары.texxarakter,товары.opisanie,поставки.partiya,поставки.kolvo,поставки.stoimzak,поставки.stoimpokup,поставки.nalichie FROM товары,поставки WHERE товары.kodtovara = поставки.kodtovara AND SUBSTR(ALLTRIM(товары.naimtovara),2,3) like SUBSTR(ALLTRIM(thisform.text2.value),2,3) or поставки.kodtovara=(thisform.text1.Value)
...
Рейтинг: 0 / 0
выборка из поля text1
    #38071820
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая у вас версия ФоксПро?
В каком месте "код не работает"?
В чем глубинный смысл использования DELETE FROM с последующим INSERT?
В чем смысл LIKE?
Опишите структуру таблиц (с типами полей), а то, действительно, похоже у вас kodtovara - символьное... но тогда зачем рассуждения об integer?
Вообще, какую логику вы пытаетесь заложить в выборку (в WHERE)?
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072095
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longfast Вот как теперь сделать так чтоб выбирало только из одного поля(т.е из поля text1 или text2 или одновременно из обоих)?Чем это определяется? Если наличием/отсутствием данных в одном из полей,то проще подготовить заранее
строку "условие" - и вперед! Типа:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
lcStroka=""
lcV1=Thisform.text1.Value
lcV2=allt(Thisform.text2.Value)
do case
  case !Empty(lcV1) and Empty(lcV2)
    lcStroka= "поставки.kodtovara=lcV1"
  case Empty(lcV1) and !Empty(lcV2)

  case !Empty(lcV1) and !Empty(lcV2)

  otherwise
    messagebox("Идите в баню!")
endcase


* остальные условия допилите сами, ну и в SELECT:

Код: plsql
1.
... WHERE  &cStroka
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072174
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,
Версия foxpro 9.0
код не работает в самой первой строчке lnKodtovara=val(thisform.text1.Value) выдает ошибку function argument value,type,or count is invalid
delete from я использую для очистки таблицы. Весь смысл моего кода заключается в том, что я использую оператор insert select, т.е из запроса (select) я выбираю данные, которые совпадают(=) с значением поля text1 для цифр, и like (типа = для букв) для charater.
и у меня получается данные, которые я нахожу с помощью select копируются в таблицу poisktovara и выводятся в форме.при следующем нажатии на кнопку поиск таблица poisktovara очищается (delete from) и туда записывается новые значения select.
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072180
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072191
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longfastAndreTM,
Версия foxpro 9.0
код не работает в самой первой строчке lnKodtovara=val(thisform.text1.Value) выдает ошибку function argument value,type,or count is invalid
delete from я использую для очистки таблицы. Весь смысл моего кода заключается в том, что я использую оператор insert select, т.е из запроса (select) я выбираю данные, которые совпадают(=) с значением поля text1 для цифр, и like (типа = для букв) для charater.
и у меня получается данные, которые я нахожу с помощью select копируются в таблицу poisktovara и выводятся в форме.при следующем нажатии на кнопку поиск таблица poisktovara очищается (delete from) и туда записывается новые значения select.

А вместо lnKodtovara=val(thisform.text1.Value)
lnKodtovara=thisform.text1.Value не пробовал?
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072204
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rewarelongfastПомогите пожалуйста с кодом. Суть в том, чтоб в форме, в поле text1 пользователь писал код товара(поле типа integer) и в таблице
программа искала этот товар и копировал записи в другую таблице (poisktovara). буквы ищет(charater), а цифры(integer) выдает ошибку.вот код
кнопки.Помогите пожалуйства.уже месяц мучаюсь

И цифирьки забиваемые туда воспринимаются программой, как строковые символы, а не числа. Отсюда и "operator operand type mismatch" (несоответствие типов операндов). Тут, конечно, непонятно было, чего вы там в этот несчастный text1 пытались вводить, но, если к примеру что-то типа "123456", то это СТРОКА, но ещё не число. Чтобы "123456" стало числом, надо использовать функцию VAL("123456") которая вернёт уже чисто число 123456.

А вот не факт. Если в Init поставить THIS.Value = 0, то при вводе будет ну никак не текст.
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072263
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longfast,

Ну да, попробуйте без VAL() в первой строке.
Ну и сравнение по имени сделайте именно так, как вы планируете: если строго 3 символа - то ==, если 3 символа из таблицы с 0-3 символами поля - то = или LIKE.
И DELETE ALL + INSERT <=> SELECT INTO TABLE, и удаленных записей не остается...

Ну и неплохо бы было завести отдельное поле КодТовара, поскольку в вашей структуре kodtovara - это ключ, поле связи, и пользователь, по идее, вообще не должен не должен оперировать его значениями.

Кстати, по структуре таблиц: в ТОВАРЫ для того, чтобы оперировать длинными строками, лучше использовать поля типа Memo, а не Character с максимальным размером; в ПОСТАВКИ для числовых данных (партии-суммы-количества) лучше использовать Numeric или Currency...
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072266
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG
А вместо lnKodtovara=val(thisform.text1.Value)
lnKodtovara=thisform.text1.Value не пробовал?
попробовал, выдает ошибку в строке select и ошибка
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072291
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonny540longfast Вот как теперь сделать так чтоб выбирало только из одного поля(т.е из поля text1 или text2 или одновременно из обоих)?Чем это определяется? Если наличием/отсутствием данных в одном из полей,то проще подготовить заранее
строку "условие" - и вперед! Типа:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
lcStroka=""
lcV1=Thisform.text1.Value
lcV2=allt(Thisform.text2.Value)
do case
  case !Empty(lcV1) and Empty(lcV2)
    lcStroka= "поставки.kodtovara=lcV1"
  case Empty(lcV1) and !Empty(lcV2)

  case !Empty(lcV1) and !Empty(lcV2)

  otherwise
    messagebox("Идите в баню!")
endcase


* остальные условия допилите сами, ну и в SELECT:

Код: plsql
1.
... WHERE  &cStroka


До конца не понял задачи, но сделал так

SET DELETED ON
DELETE FROM poisktovara
lcStroka=""
lcV1=Thisform.text1.Value
lcV2=allt(Thisform.text2.Value)
do case
case !Empty(lcV1) and Empty(lcV2)
lcStroka= "поставки.kodtovara=lcV1"
case Empty(lcV1) and !Empty(lcV2)
lcV1=Thisform.text1.Value
case !Empty(lcV1) and !Empty(lcV2)
lcV2=allt(Thisform.text2.Value)
otherwise
messagebox("Идите в баню!")
endcase
insert into poisktovara(pole1,pole2,texxarakter,opisanie,partiya,stoimzak,stoimpokup,kolvo,nalichie) Select товары.kodtovara,товары.naimtovara,товары.texxarakter,товары.opisanie,поставки.partiya,поставки.kolvo,поставки.stoimzak,поставки.stoimpokup,поставки.nalichie FROM товары,поставки WHERE &cStroka

и выдает sintax error
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072299
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM longfast,

Ну да, попробуйте без VAL() в первой строке.
Ну и сравнение по имени сделайте именно так, как вы планируете: если строго 3 символа - то ==, если 3 символа из таблицы с 0-3 символами поля - то = или LIKE.
И DELETE ALL + INSERT <=> SELECT INTO TABLE, и удаленных записей не остается...

Ну и неплохо бы было завести отдельное поле КодТовара, поскольку в вашей структуре kodtovara - это ключ, поле связи, и пользователь, по идее, вообще не должен не должен оперировать его значениями.

Кстати, по структуре таблиц: в ТОВАРЫ для того, чтобы оперировать длинными строками, лучше использовать поля типа Memo, а не Character с максимальным размером; в ПОСТАВКИ для числовых данных (партии-суммы-количества) лучше использовать Numeric или Currency...

kodtovara из таблицы товары у меня является связью с поставками в database designer.Насчет типов полей поменяю. а насчет
AndreTMНу да, попробуйте без VAL() в первой строке.
Ну и сравнение по имени сделайте именно так, как вы планируете: если строго 3 символа - то ==, если 3 символа из таблицы с 0-3 символами поля - то = или LIKE.
И DELETE ALL + INSERT <=> SELECT INTO TABLE, и удаленных записей не остается...
не особо понятно что надо сделать
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072302
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,у меня это прописано в свойствах поля text 1, в разделе data-value.Или ещё стоит прописать и init?
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072313
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longfast,

WHERE (cStroka)
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072382
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNGlongfast,

WHERE (cStroka)
А почему cstroka? у нас же clstroka
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072383
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ой lcstroks
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072389
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lcstroka
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072395
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longfastIgorNG,у меня это прописано в свойствах поля text 1, в разделе data-value.Или ещё стоит прописать и init?

Нет, конечно. Ответ был не тебе.
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072403
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
longfastlcstroka

Ну ты уж сам как-нибудь определись, как должно быть правильно.
...
Рейтинг: 0 / 0
выборка из поля text1
    #38072414
longfast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хехеех. последняя запись. lcSrtoka.
IgorNG
А вместо lnKodtovara=val(thisform.text1.Value)
lnKodtovara=thisform.text1.Value не пробовал?

попробовал, выдает ошибку в строке select и ошибка

К сообщению приложен файл. Размер - 31Kb

вы не знаете почему выдается это окно?
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 1 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / выборка из поля text1
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]